在bash中,如何使用file
删除以file*
开头的所有文件,但保留file.txt
?
我尝试了this
shopt -s extglob
rm file* !(file.txt)
但file.txt
仍然被删除。
PS:我只需要删除以file
开头的文件,而不是所有文件。例如。我想要一个名为food.txt
的文件仍然存在。
答案 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