"find home/ -mtime +25 -exec rm -rf {} \; 2> /dev/null" コマンドについて説明します。

"find home/ -mtime +25 -exec rm -rf {} \; 2> /dev/null" コマンドについて説明します。
find /home/ -mtime +25 -exec rm -rf {} \; 2> /dev/null

上記のコマンドの出力は何で、どのように機能しますか?

-exec {} \;コマンド内容

答え1

問題のコマンドが以下を見つけました。名前(ファイル、ディレクトリ、またはその他)/home/homeそれ自体を含む)は、少なくとも25日前に変更された名前を削除します。名前がディレクトリを参照している場合は、ディレクトリツリー全体が削除されます。

関連コマンドは標準出力に書き込まれず、診断メッセージはにリダイレクトされます/dev/nullfindユーティリティが削除されたディレクトリを処理しようとすると、見えないエラーメッセージが生成されることがあります。これを使用すると、-depthディレクトリツリーはトップダウンではなくボトムアップとして扱われます。

-execfind外部コマンドを呼び出すために使用されます。{}見つかった名前に置き換えられ、外部\;コマンドの終わりを示します。


このコマンドも再帰的に一致と/home削除、十分に古い場合。ディレクトリの修正タイムスタンプは、ファイルまたはディレクトリのみを更新します。まもなくディレクトリの下のファイルは追加または削除されるため、過去25日以内にその操作を実行していない場合、このコマンドはその/home内容をすべて削除することが期待されます(root権限で実行している場合)。

サブディレクトリにファイルを追加または削除しても/homeタイムスタンプは更新されません/home

ルート以外の権限で実行している場合、/home現在のユーザーに属するすべてのファイル、ディレクトリなどは、/homeそのユーザーまたはその親ディレクトリ(たとえば)が十分に古い場合は削除されます。


ただ削除したい場合一般ファイル、では提案します

find /home -type f -mtime +25 -exec rm -f {} +

この-type fテストでは、通常のファイルのみを渡すことができます。-exec ... {} +代わりに使用すると、できるだけ-exec ... {} \;少数の呼び出しが発生することを意味しますrm(いくつかの名前が収集され、に渡されます{})。

またはあなたがfindサポートしている場合-delete

find /home -type f -mtime +25 -delete

削除された内容を表示するには、-print-exec(または前-delete)を挿入してください。削除するたびにインタラクティブにメッセージを表示するには、-ok代わりに使用してください-exec。この場合はを使用せず、-delete標準エラーにリダイレクトしないでください/dev/null

答え2

これは見つかったパターンに対して実行される操作です。
/homeで、mtimeが25日より古いすべてのファイルを見つけて削除します。

mtimeは24時間前に修正された時間で、number * 24時間です。

- 見つかったパターンを表す{}でコマンドを実行します。 &\ はコマンドタグの終わりです。

関連情報