我有以下命令
find . -name "*.tiff" -exec echo `basename -s .tiff {}` \;
我希望这会打印所有我的.tiff文件而不使用文件扩展名。我得到的是
./file1.tiff
./file2.tiff
...
命令,
find . -name "*.tiff" -exec basename -s .tiff {} \;
确实产生了
file1
file2
...
这不应该是echo的输入吗?
答案 0 :(得分:5)
反引号的内容在 find命令之前执行 - 只产生在查找命令行中使用的占位符{}
- 因此得到结果。您始终可以使用set -x
来检查shell的内容。
答案 1 :(得分:1)
使用单引号字符(')而不是反引号(`) - 将命令放入反引号中会导致它被执行并在命令中被其输出替换。
此外,修改命令以摆脱echo
,如下所示:
find . -name "*.tiff" -exec 'basename -s .tiff {}' \;
这将在每个找到的文件上执行basename
。