除了某些文件之外删除文件的表达式

时间:2014-07-15 23:30:03

标签: regex linux bash

此文件列表:

FILE0001
FILE0002
FILE0003
FILE0004
FILE0005
FILE0006
FILE0007
FILE0008
FILE0009
FILE0010

我想删除除以下内容之外的所有内容:

FILE0001 
FILE0008 
FILE0010 

我该如何表达?

可能有一个非常耗时的表达,因为文件很大。 该目录中还有其他文件。这不会受到影响或被删除。即使是相同的模式名称。

示例:

FILE0001.1
FILE0002.2

3 个答案:

答案 0 :(得分:4)

bash模式(http://www.gnu.org/software/bash/manual/bashref.html#Pattern-Matching

shopt -s extglob
echo rm FILE00!(01|08|10)

删除" echo"如果你满意的话。

答案 1 :(得分:1)

GLOBIGNORE="FILE0001:FILE0008:FILE0010"
echo rm *

答案 2 :(得分:0)

这样的事情可以做到这一点,假设所有文件都在您执行命令的同一目录中,并且没有其他文件或路径需要排除:

find . ! -name 'FILE0001' ! -name 'FILE0008' ! -name 'FILE0010' -exec rm {} /dev/null \;