linux find命令输出目录名

时间:2012-02-23 19:21:33

标签: linux

如何从linux find commnad获取文件夹的名称。

我有这样的命令:

find /root/wgetlog -name -type d -empty

Whic产生以下结果:

/root/wgetlog/smil3
/root/wgetlog/smil5
/root/wgetlog/smil4

如何获取文件夹的名称:

实施例: smil3 smil4 smil5

4 个答案:

答案 0 :(得分:2)

find /root/wgetlog -type d -empty -printf "%f\n"

答案 1 :(得分:1)

如果您只需要相对路径,那么

 { pushd /root/wgetlog/; find . -name -type d -empty; popd; }

是方法,特别是如果你关心/ root / wgetlog /*的子目录。

答案 2 :(得分:0)

使用basename

find /root/wgetlog -type d -empty -exec basename {} \;

您不需要-name

答案 3 :(得分:0)

您还可以使用sed过滤掉每条路径的主要元素:

$ find /usr/bin -type d 
/usr/bin
/usr/bin/multiarch-i386-linux
/usr/bin/multiarch-x86_64-linux
/usr/bin/gda_trml2pdf
/usr/bin/gda_trml2html
...
$ find /usr/bin -type d | sed 's|.*/||'
bin
multiarch-i386-linux
multiarch-x86_64-linux
gda_trml2pdf
gda_trml2html
...

这可能比使用-printf的{​​{1}}选项更具可移植性,但如果您坚持使用Linux,这应该不是问题。

免责声明:如果您的文件/文件夹名称中有换行符,则会失败。另一方面,在这种情况下,这个片段可能不是唯一会失败的......