我想在一些 dir
中查找,并对这个目录中的文件执行 awk
,然后用每个结果替换原始文件。
find dir | xargs cat | awk ... | mv ... > filename
所以我需要最后一个命令中的文件名(由 find 找到的每个文件)。我该怎么做?
最佳答案
我会使用循环,例如:
for filename in `find . -name "*test_file*" -print0 | xargs -0`
do
# some processing, then
echo "what you like" > "$filename"
done
编辑:如评论中所述,-print0 | 的好处xargs -0
由于 for
循环而丢失。包含空格的文件名仍未正确处理。
下面的 while
循环也不会处理不寻常的文件名(很高兴知道它,虽然它不在问题中),但至少具有标准空格的文件名,所以它工作得更好,确实:
find . -name "*test*file*" -print > files_list
while IFS= read -r filename
do
# some process
echo "what you like" > "$filename"
done < files_list
关于linux - 可以找到将找到的文件的文件名推送到管道中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37436805/