如何删除所有不以特定格式结尾的文件?

10

如果要删除所有以.lnx结尾的文件,命令应该是rm *.lnx,是吗?

如果我想要删除所有不以[.lnx]结尾的文件,我应该使用什么命令?

是否有这样的命令?

3个回答

23
你可以使用这个
$ rm !(*.lnx)

!(pattern-list)
    Matches anything except one of the given patterns. 
    A pattern-list is a list of one or more patterns separated by a ‘|’.

4
好的,但请注意您需要启用extglob(使用shopt -s extglob)才能使用它。 - Kevin
在Ubuntu中,“extglob”默认为开启状态。 - kev
我有没有错过他说他在Ubuntu上的地方?我没有看到任何明示或暗示。无论如何,这并不一定适用于来这个帖子寻找答案的所有人,所以值得注意。 - Kevin

17
find . -depth 1 -type f -not -name '*.lnx' -delete

查找当前目录下所有文件 (-type f),深度为1 (-depth 1),且文件名不匹配 (-not -name '*.lnx'),然后删除它们 (-delete)。

像往常一样,请先测试一下。运行时不要加上 -delete 选项,以查看所有与条件匹配的文件。


“-type f” 不是必需的。他没有说他想要排除目录。 - Manish

3
ls | grep -v '\.lnx$' | xargs rm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接