我正在尝试使用 find 列出我的主目录下的所有文件名(基本名称,而不是完整路径)。我尝试这样做:
find ~/ -type f -exec echo $(basename "{}") ";"
但是我最终得到的是完整路径列表,而不仅仅是我想要的基本名称列表。我现在使用echo
,但理想情况下,的结果$(basename "{}")
应该是我想要编写的其他函数的参数。
为什么 basename 函数没有被正确应用?
答案1
shell$(...)
在运行 之前会解释find
。如果您希望 find shell 执行它,则需要停止 bash 替换它。我们可以这样做:
find ~/ -type f -exec sh -c 'echo $(basename "{}")' \;
这里的关键是单引号;Bash 不会触碰其中的任何内容。