传递包含xargs空格的文件路径

时间:2014-12-04 19:07:07

标签: bash filepath xargs

我试图使用xargs将包含由换行符分隔的零个或多个文件路径的变量的内容传递给另一个命令,并且已经取得了不一致的成功。

我的输入是:

的输出
newHTK=`grep -Fxv -f $TMPFILE /Users/foo/.htk`

生成上述文件名列表。在这里出现问题(或者有时莫名其妙):

echo "$newHTK" | xargs -L 1 xattr -w com.apple.metadata:kMDItemFinderComment htk

目的是使用$newHTK中的每一行作为xattr的文件名参数。通常发生的是xattr在空格处分割输入。我想我可能需要转义echo命令中出现的文件名,或以某种方式将它们用双引号括起来(任何建议都可以通过简单的方法来理解)。但是,如果这就是为什么它适用于某些文件呢?

1 个答案:

答案 0 :(得分:3)

您可以使用xargs -I标记(如果您拥有它,我不知道它的可移植性是什么)来执行此操作。

grep -Fxv -f $TMPFILE /Users/foo/.htk | xargs -I % xattr -w com.apple.metadata:kMDItemFinderComment htk %