多くのファイルを含むディレクトリがあります。 file.txtを除くすべてのファイルを削除したいです。どうすればいいですか?
不要なファイルを個別に削除するにはファイルが多すぎます。
誰かが使用を提案しました。
rm !(file.txt)
しかし、これはうまくいきません。次を返します。
Badly placed ()'s
私のオペレーティングシステムはScientific Linux 6です。
どんなアイデアがありますか?
ベストアンサー1
POSIX的に:
find . ! -name 'file.txt' -type f -exec rm -f {} +
名前付きディレクトリを除くすべての一般ファイル(隠しファイルを含む)を繰り返し削除しますfile.txt
。ディレクトリを削除するには、に-type f
変更してオプションを-type d
追加します。-r
rm
で をbash
使用するには、rm -- !(file.txt)
次の操作を行う必要があります。extglobの有効化:
$ shopt -s extglob
$ rm -- !(file.txt)
(または電話bash -O extglob
)
Kornシェルシリーズextglob
でのみ利用可能です。bash
使用時にエラーが発生する可能性rm -- !(file.txt)
がありますArgument list too long
。
以下を使用してパターンを否定zsh
できます。^
グローバル拡張できるようにする:
$ setopt extendedglob
$ rm -- ^file.txt
ksh
またはbash
、オプションと同じ構文を使用しksh_glob
てno_bare_glob_qual
有効にします。