使用 xargs 参数的内部函数调用

使用 xargs 参数的内部函数调用

我正在尝试创建一个出现在我的/tmp目录中的每个包含特定字符串的文件的文件。

问题是调用basename {}似乎不起作用。这个也不是,也不是echo basename {}

grep -R 'mystring' . | cut -d: -f 1 | uniq | xargs -n 1 -I {} touch /tmp/`basename {}`

有谁知道如何在 xargs 参数上执行 basename 函数?

答案1

尝试这个:

grep -R 'mystring' . | cut -d: -f 1 | uniq| xargs -n 1 -I {} -t -i ksh  -c "touch /tmp/$(basename {})"

答案2

问题是反引号扩展得太早(即发送到 xargs 的每个参数都不是一次)。可能有更好的方法,但您应该能够摆脱显式的 bash 循环:

grep -R 'mystring' . | cut -d: -f 1 | uniq | while read f; do touch "/tmp/`basename $f`"; done

相关内容