2017-04-05 64 views
0

我試圖找到與大量的子目錄,並在其中的文件目錄給定的字符串的一些文件,最合適的方式來傳遞參數在UNIX終端

我知道正則表達式/全局正則表達式匹配的目標文件和來自其他命令的中間目錄的名稱。例如目錄列表命令的輸出:

1234 
5321 
4546 
2456 

我試圖使用find和grep做到這一點,但我無法通過正常的目錄名查找使用xargs的。最後的命令是:

commandOutputDirs | xargs -d\n find /path/to/search/*/{} -type f -name "*fileName*" 

,但我得到以下錯誤= find: paths must precede expression: 1234

當我嘗試使用回聲,而不是找到

/路徑/到/搜索/ */{}

評估爲

/path/to/search/path 1234

我是否需要通過其他方法來傳遞這些參數以實現相同的效果?

+0

很難理解你實際嘗試做什麼!你在尋找包含內容中的字符串的文件嗎?或者你在尋找名稱中包含給定字符串的文件嗎?或者你正在尋找路徑中包含給定字符串的文件?當你找到這些文件時,你想要做什麼? –

+0

抱歉不清楚。我需要找出給定的字符串是否存在於具有特定名稱的文件的某些目錄中(我正在尋找日誌文件中的錯誤)。我可以從** commandOutputDirs **中獲取要查找文件的子目錄的名稱。我也知道以後找到的字符串所在的文件的名稱。我想獲取文件列表,然後grep他們查找該字符串。 – mtraton

+0

是否這樣? find/tmp/etc// some/Where/Else -type f ...' –

回答

0

假設你有一個包含

usr 
etc 
var 

你可以做這樣的文件pattern.txt:

while read line; do find /path/$line -type f -name "*filename* < pattern.txt 

如果一個命令行輸出,如下面的:

commandLineOutput | while read line; do find /path/$line -type f -name "*filename*