如何删除文件。*但保留file.txt?

时间:2018-01-19 17:27:29

标签: bash wildcard delete-file

在bash中,如何使用file删除以file*开头的所有文件,但保留file.txt

我尝试了this

shopt -s extglob

rm file* !(file.txt)

file.txt仍然被删除。

PS:我只需要删除以file开头的文件,而不是所有文件。例如。我想要一个名为food.txt的文件仍然存在。

3 个答案:

答案 0 :(得分:6)

你需要使用"否定" pattern匹配为文件扩展名:

$ ls file.*
file.csv  file.json  file.txt  file.xml

$ ls file.!(txt)
file.csv  file.json  file.xml

答案 1 :(得分:1)

find命令可以在这里为您提供帮助。例如:

find . -maxdepth 1 -not -name 'file.*' -not -name '*.txt' -delete

答案 2 :(得分:1)

find 方法:

find . -maxdepth 1 -type f -name 'file*' ! -name "file.txt" -delete