多数のファイルを含むディレクトリがあります。 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
有効。