Unixは30日以上経過したファイルとフォルダを削除しますが、特定のディレクトリとその中に入れ子になったファイル/フォルダはスキップされます。

Unixは30日以上経過したファイルとフォルダを削除しますが、特定のディレクトリとその中に入れ子になったファイル/フォルダはスキップされます。

特定のパスから30日以上経過したすべてのファイルとディレクトリを削除する方法を見つけたいと思います。ただし、そのパスには削除または変更したくない特定のディレクトリがあります。私は-pruneを読みましたが、うまく動作しないようです。これまでに試したコマンドは次のとおりです。find "<path to directory" -prune -o -name "<name of excluded directory" -type f -mtime +30 -exec rm {} +

ベストアンサー1

コマンドロジックがfind混乱しているようです。名前付きディレクトリを除いてファイル名を印刷するには、excludeme次のように作成できます。

find /path/to/top/directory -name excludeme -prune -o -type f -print

これは-o論理であるため、OR有効な条件はコマンド-prune-o同じ側になければなりません-prune

これを念頭に置いて、私たちは次のように結論を下します。

find "<path to directory" \
  -name "<name of excluded directory> -prune -o \
  -type f -mtime +30 -exec rm {} +

おすすめ記事