我一直在尝试运行这个命令。然而,我得到了一些意想不到的结果。看来这是我的一个明显的忽视,但我无法弄清楚。
这是我尝试过的:
鉴于我在当前目录中有一个 file.txt:
find ./ -name *.txt -print0 | xargs --null -I {} echo {}
这成功返回:
./file.txt
但是,如果我修改它以回显到文件,如下所示:
find ./ -name *.txt -print0 | xargs --null -I {} echo 'some string' > {}.alt
结果不是我所期望的:
-rw-r--r-- 1 User 197121 5 Mar 5 20:33 {}
-rw-r--r-- 1 User 197121 908 Mar 5 04:32 file.txt
所需的输出是有一个file.txt.alt
以some string
内容命名的文件。
如果有人可以伸出援手,我们将不胜感激。
答案1
shell 在管道运行之前设置重定向。相反,你可以使用类似的东西
find ./ -name '*.txt' -exec sh -c 'for f; do echo "some string" > "$f".alt; done' sh {} +