我需要从给定目录中删除除一个文件(其名称已定义)之外的所有文件。
我怎样才能从 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
- 将要保留的文件移动到目录之外的某个位置
- 使用您喜欢的方法删除目录中的所有内容
- 将要保留的文件移回目录
虽然不完全是“高科技”,但是如果使用这种方法,意外删除想要保留的文件就会困难得多。
显然,如果文件需要在所有大屠杀发生时持续存在于目录中,则这种方法会失败。
答案3
尝试
rm `ls | grep -v '^defined$'`