命令替换如何与find一起使用?

时间:2011-05-16 13:27:14

标签: macos shell unix find

我有以下命令

find . -name "*.tiff" -exec echo `basename -s .tiff {}` \;

我希望这会打印所有我的.tiff文件而不使用文件扩展名。我得到的是

./file1.tiff
./file2.tiff
...

命令,

find . -name "*.tiff" -exec basename -s .tiff {} \;

确实产生了

file1
file2
...

这不应该是echo的输入吗?

2 个答案:

答案 0 :(得分:5)

反引号的内容在 find命令之前执行 - 只产生在查找命令行中使用的占位符{} - 因此得到结果。您始终可以使用set -x来检查shell的内容。

答案 1 :(得分:1)

使用单引号字符(')而不是反引号(`) - 将命令放入反引号中会导致它被执行并在命令中被其输出替换。 此外,修改命令以摆脱echo,如下所示:

find . -name "*.tiff" -exec 'basename -s .tiff {}' \;

这将在每个找到的文件上执行basename