我指的是《Linux shell 脚本手册》一书中的以下命令。
find . -name '*.txt' | xargs -I ^ sh -c "echo -ne '\n ^: '; grep arg ^"
并有以下疑问:
- 该符号可以
^
是任何符号,如 {} 或 #,只要它们在与 相同的位置使用即可^
。 - 我看到
-ne
每个文件名上方都印有,这是为什么以及如何解决? - 它无法正确处理带有空格的文件名。如何纠正?谢谢!
我指的是《Linux shell 脚本手册》一书中的以下命令。
find . -name '*.txt' | xargs -I ^ sh -c "echo -ne '\n ^: '; grep arg ^"
并有以下疑问:
^
是任何符号,如 {} 或 #,只要它们在与 相同的位置使用即可^
。-ne
每个文件名上方都印有,这是为什么以及如何解决?
1. 严格遵守您的要求
不要
xargs
与最近的find
工具一起使用!不使用
echo
,更喜欢printf
!使用双 quptes处理shell中的空格。
使用 find 执行 shell 脚本:
或者
甚至更好:
2.XY问题?
你只是在搜索包含单词arg 的文件吗?
只需使用
grep -r
:或者显示所有
.txt
文件以及其中哪些文件包含单词arg: