
私の会社には、ユーザーがファイルを保存する Linux サーバーのセットがあります。ファイルは、#####、###、### という一般的な命名規則に従っており、番号はファイルに固有のフィールドに対応しています。ファイルは 30 日後に削除されることになっていますが、削除されず、ユーザー コミュニティの成長により、一部のサーバーのディスク容量が不足しています。
Linux サーバーのすべてのパーティションで、上記の名前付けスキームを使用して 30 日以上経過したファイルを検索し、それを新しいフォルダーに移動するプロセスをスクリプト化する方法を知っている人はいませんか?
こうすることで、クリーンアップがずっと簡単になります。なぜなら、ユーザーの中には、ファイルを何階層も深く保存している人がいるため、削除できるかどうかを判断するのはおろか、ファイルを探すだけでも時間がかかり始めているからです。
ご協力いただければ幸いです。
答え1
使用コマンドの検索必要なファイルを取得します。-mtime
オプションを使用してファイルの年齢を設定できます。正規表現を使用して\d{5},\d{3},\d{3}$
ファイル名を一致させることができます。次に、各ファイルを任意の場所に移動します。
このような:
find / -mtime +30 -regex '\d{5},\d{3},\d{3}$' -exec mv {} /path/to/destination/folder \;
- 上記のコマンドはルートにこれを解き放ちますが、これはかなり恐ろしいことです。必要なディレクトリのみにこれを含めることを検討してください。
- このパターンはそれほど独特なものではないので、注意して使用してください。
- 正規表現を微調整するここ