最も簡単な方法は、 -mindepth 1
を追加することです 、最初の深さの階層をスキップするため、親ディレクトリが除外されます。
また、余分な -exec
は必要ありません rm
への呼び出し 、あなたはただ delete
できます フォルダが空の場合は直接。
find /var/www/html/content/processing -mindepth 1 -type d -mtime +1 -delete
空でない場合:
find /var/www/html/content/processing -mindepth 1 -type d -mtime +1 -exec rm -rf {} \;
怠惰な場合は、ワイルドカードを展開することもできます。 *
以降 デフォルトでは現在のディレクトリは含まれません (dotglob
を除く) が設定されている場合)、次のこともできます:
find /var/www/html/content/processing/* -type d -mtime +1 -delete
ただし、これも dotglob
のため、隠しフォルダーは含まれません。 オプション。
問題は、find が現在のディレクトリ (.) を他のディレクトリと共に返すため、処理中のフォルダーとサブディレクトリが削除されることです。これを回避する簡単な方法は、オプションを追加することです
-not -name .
これにより、find による現在のディレクトリの出力が停止され、その結果、ディレクトリが削除されなくなります。
これは、処理ディレクトリ内でコマンドを実行している場合に機能するため、絶対パスを使用しているという事実を考慮してください:
-not -name /var/www/html/content/processing
コマンド全体は次のようになります:
find /var/www/html/content/processing -type d -mtime +1 -not -name /var/www/html/content/processing -exec rm -rf {} \;