7つのフォルダを含むログフォルダがあります。これら7つのフォルダの中にはサブフォルダもあり、これらのサブフォルダにもサブフォルダがあります。フォルダ構造、つまりファイルに影響を与えることなく、すべてのフォルダ(サブフォルダを含む)から15日以上経過したすべてのファイルを削除したいと思います。
mahesh@inl00720:/var/dtpdev/tmp/ > ls
A1 A2 A3 A4 A5 A6 A7
mahesh@inl00720:/var/dtpdev/tmp/A1/ > ls
B1 B2 B3 B4 file1.txt file2.csv
答え1
次のように起動できますfind /var/dtpdev/tmp/ -type f -mtime +15
。その後、15日より古いすべてのファイルを見つけて名前を印刷します。あるいは、コマンドの最後に指定することもできますが、-print
これはデフォルトのアクションです。どのファイルが選択されているかを確認するには、まず上記のコマンドを実行することをお勧めします。
find
コマンドが削除したいファイル(他のファイルを除く)を一覧表示していることを確認したら、そのファイルを削除するアクションを追加できます。このための一般的な措置は次のとおりです。
-exec rm -f {} \;
(または同等に-exec rm -f {} ';'
)
これはrm -f
各ファイルで実行されます。たとえば、次のようになります。rm -f /var/dtpdev/tmp/A1/B1; rm -f /var/dtpdev/tmp/A1/B2; rm -f /var/dtpdev/tmp/A1/B3; …
-exec rm -f {} +
たとえば、これはrm -f
複数のファイルで同時に実行されます。rm -f /var/dtpdev/tmp/A1/B1 /var/dtpdev/tmp/A1/B2 /var/dtpdev/tmp/A1/B3 …
したがって、オプション 1 よりも少し速い場合があります。 (何千ものファイルがある場合は、このタスクを
rm -f
複数回実行する必要があるかもしれません。)-delete
これはfind
実行せずにファイルを削除するように指示しますrm
。これはバリアントよりはるかに高速ですが、-exec
すべてのシステムで動作するわけではありません。
したがって、オプション2を使用すると、コマンド全体は次のようになります。
find /var/dtpdev/tmp/ -type f -mtime +15 -exec rm -f {} +
答え2
別のオプションは、コマンド出力をパイプし、find
次xargs
を使用して削除することです。
find /var/dtpdev/tmp/ -type f -mtime +15 | xargs rm
しかし、ジェーンの賛成投票の回答は、この回答よりもまだ有効です。
答え3
努力する:
find /path/to/files/ -cmin +240 -type f -name *.php -delete
または
find /path/to/files/ -type f -name *.php -mtime +30 -exec rm {} \;
1つ目は組み込みの削除機能を使用して4時間以上のファイルを削除しfind
、2つ目はrm
inside句を使用して30日以上のファイルを削除します-exec
。
答え4
いいね
rm -rf `find yadi`
単純さによるものです。そのバックティックは「私を最初に処刑しなさい」と言います。だからあなたはrm -rf
それらの間の結果に対抗して戦っています。