名前に共通点がない指定された一部のファイルのみを維持しながら、ディレクトリ内のすべてのファイルを削除したいと思います。どうすればいいですか?
たとえば、保持するファイル名は次のとおりです。
file_1.png
、、、another_file.jpg
some_music.mp3
ベストアンサー1
バッシュを使用する場合:
shopt -s extglob
rm -- !(file1|file2|file3)
最初の行は、拡張パターンマッチングを有効にした後、次のいずれかを使用します。
!(pattern-list)
与えられたパターンの1つを除くすべての項目と一致
パターンリストは、で区切られた1つ以上のパターンのリストです|
。
またはzsh
setopt extendedglob
rm -- ^(file1|file2)
または、より移植性が高い場合は、以下を使用してくださいfind
。
find . -maxdepth 1 ! -name 'file1' ! -name 'file2' -type f -exec rm -v {} +