如何在 Unix 中删除除一个文件之外的所有文件?

如何在 Unix 中删除除一个文件之外的所有文件?

可能重复:
如何删除目录中除部分文件之外的所有文件?

如何在Unix中删除除一个或一些文件之外的所有文件?

就像是

 rm -rf -ignore myfile.txt *

答案1

ls * | grep -v dont_delete_this_file | xargs rm -rf 

例子 :

mkdir test && cd test
touch test1
touch test2
touch test3
touch test4
touch test5

删除除“test2”之外的所有文件:

ls * | grep -v test2 | xargs rm -rf

然后‘ls’输出是:

test2

编辑:

感谢您的评论。如果目录包含一些带空格的文件:

mkdir test && cd test
touch "test 1"
touch "test 2"
touch "test 3"
touch "test 4"
touch "test 5"

您可以使用(使用 bash):

rm !("test 1"|"test 4")

‘ls’输出:

test 1
test 4

答案2

假设您正在使用 bash shell(最常见的情况),则可以使用否定通配符(路径名扩展)符号:

rm -rf !(myfile.txt)

这使用了扩展的通配符,因此您需要先启用它:

shopt -s extglob

答案3

 cp myfile.txt somewhere_else;
 rm -rf *
 cp somewhere_else/myfile.txt .

答案4

相关内容