如何删除以特定字母开头的文件

4
我想在一个目录中删除所有文件名不以字母I或N开头的文件——在bash中最简单的方法是什么?
2个回答

14

你可以按照以下步骤进行:

rm [^IN]*

[^IN]是一个模式,匹配除了IN以外的任意字符 - 这种语法在bash手册的Pattern Matching部分有描述。


在bash中也可以使用+1:shopt -s extglob; rm !([IN]*),当您要排除的文件列表更复杂时,这种方法更加有用。 - glenn jackman

3
另一种方法:
find . -maxdepth 1 -type f -name "[^NI]*" -delete

显然,这个选项更糟糕 ;)

1
  1. 他要求文件不能以I/N开头
  2. find 是递归的,除非你添加 maxdepth
  3. 你可以使用 -delete 标志而不是 -exec rm :)
- Martin
这会递归进入子目录,但是 OP 希望仅针对当前目录。 - tripleee
@Martin 对不起,你是正确的 ;) - vicentazo

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