ディレクトリから 1 つを除くすべてのファイルを削除するにはどうすればよいですか?

ディレクトリから 1 つを除くすべてのファイルを削除するにはどうすればよいですか?

指定されたディレクトリから、1 つのファイル (名前が定義されている) を除くすべてのファイルを削除する必要があります。

OS X のターミナルからこれを実行するにはどうすればよいですか? 1 つのコマンドでこれを実行できますか?

答え1

shopt -s extglob && rm !(non_delete_file)

または

rm -f !(non_delete_file)

または

find . ! -name non_delete_file -delete

上記のfindコマンドは再帰的に動作し、現在のディレクトリとすべてのサブディレクトリにあるすべてのファイルとディレクトリを削除することに注意してください。これが問題になる場合は、-type f(ファイルのみに一致) と-maxdepth 1(サブディレクトリを無視して現在のディレクトリ内のみに一致)を使用してください。

find . -type f -maxdepth 1 ! -name non_delete_file -delete

答え2

  1. 保存したいファイルをディレクトリ外のどこかに移動する
  2. お好みの方法でディレクトリ内のすべてを削除します
  3. 保存したいファイルをディレクトリに戻します

まさに「ハイテク」ではありませんが、この方法を使用すると、保存したいファイルを誤って削除してしまう可能性がはるかに低くなります。

明らかに、このアプローチは、すべての大虐殺が起こっている間にファイルがディレクトリ内に継続的に存在する必要がある場合には失敗します。

答え3

試す

rm `ls | grep -v '^defined$'`

関連情報