【发布时间】:2019-12-09 13:27:26
【问题描述】:
我有一堆文件想用find 找到。然后我想运行一个命令(输出到STDOUT)并将其写入一个带有附加扩展名的新文件。这是我目前所拥有的:
find . -name "*.txt" -exec command -O -I{} > {}.nav \;
所以说find 给了我文件列表:
./1/file1.txt
./2/file2.txt
我想要结果:
./1/file1.txt
./1/file1.txt.nav
./2/file2.txt
./2/file2.txt.nav
但我只得到一个所有内容都已连接到的新文件,名为{}.nav。关于我应该如何进行的任何提示?
【问题讨论】:
-
@andand :你知道吗,你写它的方式,选项
-O -I{}被传递给command?另外,{}.nav是一个奇怪的文件名,但当然你可以随意命名你的文件.... -
同意将
-O -I{}传递给command,这似乎不是您所需要的。您还可以给我们一个用于测试的命令吗?我们可以只使用echo或cat代替吗?祝你好运。 -
@andad :要尝试的一件事是制作一个脚本,该脚本可以执行您制作
.nav文件所需的任何操作。我认为>重定向只被 shell 处理一次。如果您可以将该重定向移动到为每个文件执行的脚本中,那么您应该很好。祝你好运。 -
@user1934428 是的,我知道
-O -I{}已传递给命令。我认为find会用正在处理的文件名替换{}.nav中的{}。谢谢@shellter,我以为>会写信给<filename>.nav(即从find找到的每个文件。谢谢大家的帮助! -
@andand :这是正确的。因此,
command确实应该得到相应的参数。但是这个神秘的命令是什么呢?我猜你并没有在-exec后面写上command这个词,而是你要在这里执行的命令的实际名称。