使用 for 循环 grep 文件行
grep the lines of file using for loop
有一个文件,每行显示不同的文件路径。
```
my_file
/the/first/path/file1
/the/second/path/file2
....
```
我想使用 for 循环在每个文件中查找一个字符串。
```
for i in $(cat my_file); do cd "$i"; done | grep -w string "$i"
```
但这似乎对我不起作用。我正在为所有文件目录获取此文件
-bash: cd: /the/first/path/file1: No such file or directory
我做错了什么?在此先感谢您的帮助
不需要 for
循环,使用 xargs
:
xargs -a my_file -d '\n' grep -h -w string
注意 #1:我添加了 -h
选项(GNU 扩展名),这样文件名就不会被 grep
添加到输出中(就像在您的命令中一样)。
注意 #2:因为您使用的是 Linux 和 Bash,我假设 GNU xargs
。如果您的 xargs
不理解 -a
选项,请改用此选项:
< my_file xargs -d '\n' grep -h -w string
有一个文件,每行显示不同的文件路径。
```
my_file
/the/first/path/file1
/the/second/path/file2
....
```
我想使用 for 循环在每个文件中查找一个字符串。
```
for i in $(cat my_file); do cd "$i"; done | grep -w string "$i"
```
但这似乎对我不起作用。我正在为所有文件目录获取此文件
-bash: cd: /the/first/path/file1: No such file or directory
我做错了什么?在此先感谢您的帮助
不需要 for
循环,使用 xargs
:
xargs -a my_file -d '\n' grep -h -w string
注意 #1:我添加了 -h
选项(GNU 扩展名),这样文件名就不会被 grep
添加到输出中(就像在您的命令中一样)。
注意 #2:因为您使用的是 Linux 和 Bash,我假设 GNU xargs
。如果您的 xargs
不理解 -a
选项,请改用此选项:
< my_file xargs -d '\n' grep -h -w string