可能重复:
如何删除目录中除某些文件外的所有文件?
如何在Unix中删除除一个(或一些)文件之外的所有文件?
就像是
rm -rf -ignore myfile.txt *
Run Code Online (Sandbox Code Playgroud)
小智 20
ls * | grep -v dont_delete_this_file | xargs rm -rf
Run Code Online (Sandbox Code Playgroud)
例子 :
mkdir test && cd test
touch test1
touch test2
touch test3
touch test4
touch test5
Run Code Online (Sandbox Code Playgroud)
删除除 'test2' 之外的所有文件:
ls * | grep -v test2 | xargs rm -rf
Run Code Online (Sandbox Code Playgroud)
然后'ls'输出是:
test2
Run Code Online (Sandbox Code Playgroud)
编辑:
感谢您的评论。如果目录包含一些带空格的文件:
mkdir test && cd test
touch "test 1"
touch "test 2"
touch "test 3"
touch "test 4"
touch "test 5"
Run Code Online (Sandbox Code Playgroud)
您可以使用(使用 bash):
rm !("test 1"|"test 4")
Run Code Online (Sandbox Code Playgroud)
'ls' 输出:
test 1
test 4
Run Code Online (Sandbox Code Playgroud)
小智 8
假设您使用的是 bash shell(最常见的情况),您可以使用否定通配符(路径名扩展)符号:
rm -rf !(myfile.txt)
Run Code Online (Sandbox Code Playgroud)
这使用扩展的通配符,因此您需要先启用它:
shopt -s extglob
Run Code Online (Sandbox Code Playgroud)