问题是如何将以下命令合并在一行中并使用exec。
find . -name '*.txt' -exec sh -c 'echo "$(sed -n "\$p" "$1"),$1"' _ {} \;
结果:所有.txt文件的路径和名称。
find . -name '*.txt' -exec sed -n '/stringA/,/stringB/p' {} \;
结果:所有.txt文件的开始和结束参数之间都存在一行。
请求的结果:在开始和结束参数之间给我一行。第一行必须包含.txt文件的路径和名称。
find . -name '*.txt' -exec ???? {} \;
./alpha/file01.txt
串
1号线
2号线
字符串B
./beta/file02.txt
串
1号线
2号线
字符串B
谢谢。T.
如果文件不是空的,那么您需要做的是:
find . -name '*.txt' -exec awk 'FNR==1{print FILENAME} /StringA/,/StringB/' {} +
如果它们可以为空,那么最简单的处理方法是对BEGINFILE使用GNU awk:
find . -name '*.txt' -exec awk 'BEGINFILE{print FILENAME} /StringA/,/StringB/' {} +
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句