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

How to delete file.* but keep file.txt?

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

我试过了this

shopt -s extglob

rm file* !(file.txt)

但是file.txt还是被删除了

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

您需要使用 "negative" 模式匹配作为文件扩展名:

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

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

find 命令可以在此处帮助您。例如:

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

find方法:

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