while read f; do
test -f "$f" && grep -F 'step2' "$f"
done <file1.dat
的file1.dat
(含的文件名)的線被逐個讀取到f
變量。
的while
-loop測試的身體,以確保文件$f
使用grep
,以尋找給定文件中的文本字符串step2
之前就存在。
一個稍微詳細的(但當量)循環的版本:
while read f; do
if [ -f "$f" ]; then
grep -F 'step2' "$f"
fi
done <file1.dat
根據你運行這個地方,你可能需要稍微修改grep
命令。例如,如果您運行此文件夾中的只是所有文件的子文件夾上面:
grep -F 'step2' "all_files/$f"
這不是在問題完全清楚,但容易調節如果需要的話。
當然,你可能只是繞過file1.dat
乾脆說
grep -F 'step2' all_files/case?.txt
沒有循環可言。
編輯:新的要求:
find ./all_files -type f -name "case?.txt" -print0 |
xargs -0 grep -l -F 'step2'
這將通過all_files
夾下的所有文件夾中進行遞歸搜索,找到匹配case?.txt
的文件,並報告包含期望字符串。
您可能想要更改模式更嚴格,可能是case[1-5].txt
。
非常感謝你.. – user180946
但輸出也顯示不匹配的文件...錯誤:'sed:無法打開文件case5.txt',case5.txt存在於file1.dat中,但不存在於./all_files文件夾中。請幫助 – user180946
在應用sed命令之前,我已更新以檢查文件是否存在。 – SLePort