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

LinuxのディレクトリにX個を超えるファイルがある場合は、最も古いファイルを見つけて削除します

ハードドライブにたくさんの映画があり、映画のジャンルに基づいてさまざまなフォルダに保存しています。ここで、特定の数のムービーファイルのみをディレクトリに保持し、それ以外はすべて削除したいと思います。さらに重要なのは、最も古いファイルのみを削除したいということです。このようにして、各フォルダーに一定数のファイルを保持できます。非常に多くのファイルが多数のフォルダーに散在しているため、各フォルダーに移動し、最も古いファイルを検索して、それらを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で一定時間アクセスされていないファイルを削除する

Linux
  1. findコマンドを使用してLinux上のファイルとディレクトリを検索します

  2. Linuxでコマンドラインからファイルとディレクトリを削除する方法

  3. Linuxですべてのディレクトリのファイルを再帰的に検索する方法

  1. 名前でファイルとディレクトリを削除します。そのようなファイル、又はディレクトリはありません?

  2. Linux –フォルダにファイルがあるかどうかを調べてそれに応じて終了する方法(Ksh)?

  3. Linux ファイルとディレクトリの削除

  1. Linuxですべてのファイルとディレクトリ名を小文字に変更

  2. Linuxのディレクトリツリーで最も古いファイルを見つける方法

  3. Linuxで特定の日付より古いファイルを削除するにはどうすればよいですか?