如何从目录中删除除一个文件之外的所有文件?

如何从目录中删除除一个文件之外的所有文件?

我需要从给定目录中删除除一个文件(其名称已定义)之外的所有文件。

我怎样才能从 OS X 中的终端执行此操作?我可以用一个命令完成此操作吗?

答案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$'`

相关内容