ディレクトリから最も古いファイルを削除する

ディレクトリから最も古いファイルを削除する

mvシステムコマンドを実行しようとしているダウンローダがPerlで実行されています。

MV出力

mv: cannot move `./PMC5318673/EXCLI-15-758.pdf' to `/directory/EXCLI-15-758.pdf': No space left on device

ドライブにスペースがありますが、フォルダはそのinodeをすべて使用したようです。

だから私たちが考えた解決策は、ディレクトリから最も古いファイルを削除し、そのファイルをそこに移動し、mvするスペースがまだない場合は、次に最も古いファイルを削除することでした。

迅速に実行されるシステムコマンドが必要です。 (何百万ものファイルがあるため、時間がかかりますか?)最も古いファイルは削除できます。また、これらのファイルはサブフォルダーにある場合があります。

また、最も古いファイルを削除する以外に他の方法が思い出されたら教えてください。

ベストアンサー1

zshから:

rm -- **/*(.om[-1])

(または他のシェルからzsh -c 'rm -- **/*(.om[-1])':)

意味は次のとおりです

  1. **/* 再帰的にファイルを収集

  2. (…)はzsh グローバル修飾子

  3. .「一般」ファイル(ディレクトリなどを除く)のみが考慮されることを意味します。

  4. om変更時間別のソートを表します。

  5. -1最も古いファイルのみが選択されたことを示します。

~に帰属Gillesの答えからインスピレーションを得てください。

おすすめ記事