2015-02-06 34 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 {} \;