Answers:
基本名称:
find . -type f -exec basename {} \;
;
终止-exec
操作。\
之所以需要,是因为;
它对外壳也有特殊的意义。
Evilsoup提到发布的内容不适用于间隔的文件名。因此,您可以使用:
find . -type f -print0 | while IFS= read -r -d '' filename; do echo ${filename##*/}; done
使用GNU find,您可以执行以下操作:
find ~/tmp/ -printf "%f\n"
在OS X中也可能值得尝试。
-printf
在OS X的BSD上不受支持find
。
-printf
与C printf
或POSIX shell实用程序关系不大printf
。很少考虑将此历史功能名称用于其他用途。保守的BSD家伙可能以相同的方式看到它,因此我们可能不会-printf
在BSD查找中看到该名称的克隆。
有一种更好的方法来剥离除文件路径的最后一部分以外的所有内容。与awk。更好是因为awk不会对每个文件执行一次。在某些情况下,这很重要。
find ~/tmp/ -type f | awk -F/ '{ print $NF }'
我们仅在〜/ tmp中查找文件,并获得一个列表,其中每个条目都用斜杠分隔。因此,我们使用斜杠作为字段分隔符(-F /)并打印与最后一个字段($ NF)相对应的字段参数($ 1 .. $ 9)。
编辑:
使用sed
:
$ find . -type f | sed 's/.*\///'
使用xargs命令,如@nerdwaller的响应中所述
$ find . -type f -print0 | xargs --null -n1 basename
find . -type f -print0| xargs --null -n1 basename
--null
或-n1
期权可在OSX