【发布时间】:2016-09-23 00:55:13
【问题描述】:
我想在一些dir中查找,并在此目录中的文件上查找awk,然后用每个结果替换原始文件。
find dir | xargs cat | awk ... | mv ... > filename
所以我需要最后一个命令中的文件名(find 找到的每个文件)。我该怎么做?
【问题讨论】:
-
你遇到了什么问题?
-
编写一个脚本并传递文件名
find dir -exec myscript {} \;,其中 myscript 以name="$1"开头,并且是 cat、awk 等。 -
xargs cat这里没有意义(并且不会工作,因为它会合并文件)。xargs awk会更好(并且会让awk独立处理每个文件,如果你真的想要,包括运行mv)。 -
您希望在哪里使用这种管道从
awk写入内容?您需要一个文件供mv操作(并且它不会从标准输入读取。您可以让awk(使用xargs awk)写入一个临时文件,然后让它将新旧名称打印到标准输出,然后使用xargs mv(每个命令限制为两个条目)但这太复杂了。
标签: linux bash gnu-findutils