別のディレクトリにある珍しいファイルに名前が格納されているいくつかのファイルを除いて、ディレクトリから古いファイル(60日以上)を削除するシェルスクリプトを作成しています。
次のコマンドが1つの例外ファイルに対して機能することを知っていますが、例外ファイルのリストを確認する必要があります。
find . ! -name 'file.txt' -type f -exec rm -f {} +
答え1
ファイル名が一般名(改行文字を含まないなど)と仮定すると、次のように動作します。
find . -mtime +60 | fgrep -v -x -f exceptions.txt | xargs -d '\n' rm -f
まず、ドライランを実行してrm -f
交換してください。印刷物ls -1
と同じようにパスを配置します。find
exceptions.txt
答え2
そのようなオプションがないと思います。除外リストビルドコマンドをfind
使用できます。printf
find . -name "*.txt" $(printf "! -name %s " $(cat file.txt)) -mtime +60 -exec rm -f {} +
file.txt
find
コマンドから除外するファイルのリストがあります。