ハードドライブにたくさんの映画があり、映画のジャンルに基づいてさまざまなフォルダに保存しています。ここで、特定の数のムービーファイルのみをディレクトリに保持し、それ以外はすべて削除したいと思います。さらに重要なのは、最も古いファイルのみを削除したいということです。このようにして、各フォルダーに一定数のファイルを保持できます。非常に多くのファイルが多数のフォルダーに散在しているため、各フォルダーに移動し、最も古いファイルを検索して、それらを1つずつ手動で削除するのは非常に時間のかかるプロセスです。これを行う簡単な方法を探しているときに、次の解決策を見つけました。読む。それほど難しいことではありません。
Linuxのディレクトリで最も古いファイルを見つけて削除する
10個を超えるファイルがある場合に、最も古いファイルを見つけて削除したいとします。 ディレクトリ内。どうしますか?とても簡単です。
ostechnixという名前の次のディレクトリを取得します 例として。コマンドを使用して、このディレクトリにあるファイルの数を確認しましょう:
$ find ostechnix / -type f | wc -l </ pre>または、そのディレクトリにcdして実行します:
$ ls | wc -l </ pre>出力例:
33![]()
上記の例でわかるように、ディレクトリ ostechnix 33個のファイルが含まれています。このディレクトリに33個のファイルは必要ありません。最も古いファイルをすべて削除し、10個のファイルだけを残したい。
ここで、このディレクトリに10個を超えるファイルが含まれている場合は、このディレクトリで最も古いファイルを見つけて削除しましょう。これを行うには、そのディレクトリに移動します:
$ cd ostechnixそして、次のコマンドを実行します。
$ ls -1t |テール-n+11| xargs rmまたは、
$ ls -1t |テール-n+11| xargs rm -fどこで、
-
ls
:ディレクトリの内容を一覧表示します。 -
-1t
: 1(番号 1 )は、ls
の出力を示します 1行に1つのファイルである必要があります。t
内容を変更時刻で並べ替え、最新のものから順に示します。 tail
:ファイルの最後の部分を出力します。-
-n +11
:最後の10行ではなく、最後のNUM行を出力します。または、-n + NUMを使用して、行NUMで始まる出力を行います -
xargs
:標準入力からコマンドラインを構築して実行します。 -
rm -f
:ファイルまたはディレクトリを削除します。f
存在しないファイルと引数を無視し、プロンプトを表示しないことを示します。これは、ファイルが10個未満の場合、このコマンドはエラーメッセージを表示しないことを意味します。 -
|
-パイプラインです。これは通常、制御演算子の1つで区切られた1つ以上のコマンドのシーケンスです|
または|&
。
したがって、現在の作業ディレクトリに10を超えるファイルがある場合、上記のコマンドは最も古いファイルを削除します。最も古いファイルを削除した後、ディレクトリにあるファイルの数を確認するには、次のコマンドを実行します。
$ ls | wc -l </ pre>更新:
ファイル名にスペースが含まれている場合、上記のコマンドは機能しません。なぜなら、
xargs
コマンドは、区切り文字として空白文字(タブ、スペース、新しい行)を取ります。その場合、改行文字('\n'
)に対してのみ絞り込むことができます。 )with-d
以下のようなオプション:$ ls -1t |テール-n+11| xargs -d'\ n'rm -fこれがお役に立てば幸いです。
おすすめの記事:
- LinuxでX日より古いファイルを検索して削除する方法
- Linuxで一定時間アクセスされていないファイルを削除する