运行它包含所有在您尝试搜索文件的目录里面这个命令,
grep '28590301456967003510KKK.*00051' *.txt
例子:
$ cat foo.txt
YYY28590301456967003510KKKxxxxxxxxxxxx_001_00051_20140616.dat
YYY5125741025CCCxxxxxxxxxxxxxxxxxxxxxx_002_05977_20140616.dat
$ cat bar.txt
YYY28590301456967003510KKKxxxxxxxxxxxx_001_00051_20140616.dat
YYY5125741025CCCxxxxxxxxxxxxxxxxxxxxxx_002_05977_20140616.dat
foo
bar
$ grep '28590301456967003510KKK.*00051' *.txt
foo.txt:YYY28590301456967003510KKKxxxxxxxxxxxx_001_00051_20140616.dat
bar.txt:YYY28590301456967003510KKKxxxxxxxxxxxx_001_00051_20140616.dat
如果你想里面的文件搜索模式哪些存在于子目录中,你可以试试这个命令
$ find . -mindepth 1 -type f -name "*.txt" | xargs grep '28590301456967003510KKK.*00051'
./foo.txt:YYY28590301456967003510KKKxxxxxxxxxxxx_001_00051_20140616.dat
./foo-bar/aa.txt:YYY28590301456967003510KKKxxxxxxxxxxxx_001_00051_20140616.dat
它找到文件及其路径以及与该模式匹配的文本。
OR
,你可以使用grep也对内部子目录中的文件进行搜索,
$ grep -R --include="*.txt" '28590301456967003510KKK.*00051' .
./aa1.txt:YYY28590301456967003510KKKxxxxxxxxxxxx_001_00051_20140616.dat
./foo-bar/ram.txt:YYY28590301456967003510KKKxxxxxxxxxxxx_001_00051_20140616.dat
-R
- >递归
--include="*.txt"
- >仅.txt文件
'28590301456967003510KKK.*00051'
- >模式
.
- >当前目录(从目录grep操作将要发生)。
无论何时您在shell中编写循环来解析文本文件,您都有错误的方法。这听起来像你只需要一个简单的'grep'命令(请参阅@ AvinashRaj的答案),但如果您的要求比您告诉我们的还多,那么您就可以使用'awk'。无论哪种情况,您都不会编写shell循环。 –