有一個文件夾結構如下圖所示./all_files搜索使用參考文件和打印匹配線
-rwxrwxrwx reference_file.txt
drwxrwxrwx file1.txt
drwxrwxrwx file2.txt
drwxrwxrwx file3.txt
reference_file.txt具有文件名作爲在FILE1.TXT和file2下面所示
$cat reference_file.txt
file1.txt
file2.txt
數據.txt如下所示:
$cat file1.txt
step_1
step_2
step_3
現在,我必須採取特定的步驟說step2從每個文件
注1:文件名必須顯示在reference_file.txt
注2:總是2:第二步是不是號線
注意3:搜索應遞歸執行。
我用下面的腳本:
#!/bin/sh
for i in cat reference_file.txt;
do
find . -type f -name $i | grep -v 'FS*' | xargs grep -F 'step_2'
done<reference_file.txt
使用上面的代碼後,我沒有輸出。
# bash -x script.sh
+ for i in cat reference_file.txt
+ find . -type f -name **cat**
+ xargs grep -F 'step_2'
+ for i in cat **reference_file.txt**
+ find . -type f -name reference_file.txt
+ xargs grep -F 'step_2'
增加了新的要求:
目標= step_XX_2其中XX可以是任何東西,應該跳過搜索..所以這個願望輸出中會.. step_ab_2 step_cd_2 step_ef_2
你爲什麼要閱讀'reference_file.txt'兩次?您可以將文件「貓」化,然後將其重定向到循環的標準輸入中 - 看起來您並不使用它。你想用兩個星號來達到什麼目的? – cdarke
你能顯示所需的輸出嗎? – cdarke
您的for循環遍歷兩個元素'cat'和'reference_file.txt'。使用'while'而不是'for'。 – choroba