保持したい小さなファイルセットを除いて、ディレクトリ内のすべてをどのように繰り返し削除できますか?たとえば、f2
名前付きファイルを除くすべてのファイルを削除しますf5
。
# Create a testing ground
mkdir -p d{1..3}
touch d{1..3}/f{1..5}
# Remove all files EXCEPT ones named f2 and f5.
find . -type f -not -name ('f2'|'f5') -type f -exec rm -f '{}' +
# Remove empty directories
find . -type d -empty -delete
生産:
bash: syntax error near unexpected token `('
究極の目標は、より大きなCユーザースペースアプリケーション内でこれを行うことですが、system()
コマンドラインコマンドを使用する方が簡単です。
答え1
find . -type f -not \( -name f2 -o -name f5 \) -delete
それは行わなければなりません。
-delete
同じ-exec rm -f '{}' +
ですが、より短く、より効率的です。ただし、実際に削除したいファイルのみをインポートすることを確認するには、まずそれを実行せずに実行してください。