多数のファイルを含むディレクトリがあります。 file.txt以外のすべてのファイルを削除したい。どうすればよいですか?
ファイルが多すぎて不要なファイルを個別に削除できず、名前が多すぎて*この1つのファイル以外のすべてのファイルを削除できません。
誰かが使用を提案しました
rm !(file.txt)
しかし、それは機能しません。戻ります:
Badly placed ()'s
私のOSはScientificLinux6です。
何かアイデアはありますか?
承認された回答:
可能性:
find . ! -name 'file.txt' -type f -exec rm -f {} +
file.txtを除くすべての通常のファイル(非表示のファイルを含む)を再帰的に削除します 。ディレクトリを削除するには、-type fを変更します to -type d -rを追加します rmのオプション 。
bashで 、rm -- !(file.txt)を使用するには 、extglobを有効にする必要があります:
$ shopt -s extglob
$ rm -- !(file.txt)
(またはbash -O extglobを呼び出す )
extglobに注意してください bashでのみ機能します とKornシェルファミリー。そして、rm -- !(file.txt)を使用します Argument list too long エラー。
zshで 、^を使用できます extendedglobを有効にしてパターンを無効にするには:
$ setopt extendedglob
$ rm -- ^file.txt
または、kshで同じ構文を使用します およびbash オプション付きksh_glob およびno_bare_glob_qual 有効。