2015-02-06 68 views
0

我试图在“查找”输出中在BASH中设置一个进程。不过,我也有一个不应该进行处理的文件名列表,但它们位于相同的目录中。我无法通过文件类型区分这些文件。BASH查找文件名但跳过文件名列表

一个例子如下:

m001.png 
m002.jpg 
m003.tif 
m004.png 
m005.svg 
... 
m300.png 

比方说,我有姓名的名单我不想过程:

m003.tif 
m005.svg 
m055.tif 
m056.png 
m078.jpg 
m079.jpg 
... 
m275.svg 

名单似乎种随机的,而是有限的,我不能按类型分开文件,即

find . ! -name '\*.svg' ! -name '\*.tif' -exec sh c <process> {} + 

不是一个选项。

有没有办法将find和printf结合起来以递归创建find命令?

+1

为什么不能有你'C'脚本检查文件是否应被跳过或不?在脚本开始的时候只需要几行:“在do-not-touch文件中列出的命令行中指定的文件?”。 – 2015-02-06 19:15:21

+1

也许你之后执行的脚本可能会检查文件是否在“不处理列表”中并跳过它。 – 2015-02-06 19:15:24

+0

或'find .... | fgrep -vf $ excludeFile | xargs c'?祝你好运。 – shellter 2015-02-06 19:39:57

回答

0

如何:

find . $(printf "! -name %s " $(cat exclude_list_file)) -exec process {} \;