GNU/Linux >> Linux の 問題 >  >> Linux

ファイルをカウントし、最も古いファイルを削除するシェル スクリプト

pwd がファイルを削除する正しいディレクトリであることを確認してください (ファイル名に通常の文字のみが含まれていると仮定します):

ls -A1t | tail -n +11 | xargs rm

最新の 10 個のファイルを保持します。これをカメラ プログラム 'motion' で使用して、最新のフレーム グラブ ファイルを保持します。方法を教えてくれたので、すべての進行中の回答に感謝します。


find は、この種のタスクの一般的なツールです:

find ./my_dir -mtime +10 -type f -delete

説明

  • ./my_dir あなたのディレクトリ (あなた自身のものに置き換えてください)
  • -mtime +10 10 日以上経っている
  • -type f ファイルのみ
  • -delete 驚くことではありません。 削除して find をテストします コマンド全体を実行する前にフィルタ

./my_dir に注意してください 悪い驚きを避けるために存在します!


この種のことを行う適切な方法は、 logrotate を使用することです .


これを試してください:

ls -t | sed -e '1,10d' | xargs -d '\n' rm

これは、ファイル名のすべての文字 (改行を除く) を処理する必要があります。

ここで何が起こっているのですか?

  • ls -t 現在のディレクトリ内のすべてのファイルを変更時間の降順で一覧表示します。つまり、最近変更されたファイルが最初になり、1 行に 1 つのファイル名になります。
  • sed -e '1,10d' 最初の 10 行、つまり最新の 10 個のファイルを削除します。 tail の代わりにこれを使用します tail -n +10 が必要かどうか思い出せないから または tail -n +11 .
  • xargs -d '\n' rm 各入力行を (終了改行なしで) 収集し、各行を引数として rm に渡します .

この種のものと同様に、安全な場所で実験してください。


Linux
  1. 簡単なシェルスクリプトで配布名とバージョン番号を取得するにはどうすればよいですか?

  2. シェルスクリプトでタイムアウトしますか?

  3. 最も古いファイルを移動するためのシェルスクリプト?

  1. ソースシェルスクリプトへのパスを決定しますか?

  2. フォルダから最も古いファイルを削除するためのBashスクリプト?

  3. シェルスクリプト:ファイルをディレクトリとサブディレクトリに並べ替えますか?

  1. $の意味は?シェルスクリプトでは?

  2. UNIX シェル スクリプトからファイルを ftp およびダウンロードする方法

  3. シェルスクリプトの並列実行