jsonファイルのファイルを除いて、dirのすべてのファイルを削除しました。

jsonファイルのファイルを除いて、dirのすべてのファイルを削除しました。

フォルダには100万を超えるイメージを持つ静的アセットサーバーがあり、そのほとんどはもはや必要ありません。

.jsonファイルにまだ必要なファイル名のリストがあります。

bashでファイル名がjsonリストにない場合は、そのディレクトリ内のすべてのファイルをどのように削除しますか?

よろしくお願いします!

ベストアンサー1

これらのファイル名に引用符が必要ないとします(スペースなし、特殊文字なし)。

$ cat keep.json 
["file1.png", "file2.png"]

find -not '(' $(php -r  'echo "-name " . implode(" -o -name ", json_decode(file_get_contents("keep.json")));') ')' -delete

内容を削除したいフォルダからコマンドを実行します。なしで実行すると、-delete一致するファイルのリストが削除されるのではなく表示されます。

おすすめ記事