从linux find命令输出目录名

从linux find命令输出目录名,linux,Linux,如何从linux查找命令中获取文件夹的名称 我有这样一个命令: find /root/wgetlog -name -type d -empty Whic产生以下结果: /root/wgetlog/smil3 /root/wgetlog/smil5 /root/wgetlog/smil4 如何仅获取文件夹的名称: 例如: smil3 smil4 smil5使用: 您不需要-name查找/root/wgetlog-type d-empty-printf“%f\n”您还可以使用sed过滤掉每个路径

如何从linux查找命令中获取文件夹的名称

我有这样一个命令:

find /root/wgetlog -name -type d -empty
Whic产生以下结果:

/root/wgetlog/smil3
/root/wgetlog/smil5
/root/wgetlog/smil4
如何仅获取文件夹的名称:

例如: smil3 smil4 smil5使用:


您不需要
-name

查找/root/wgetlog-type d-empty-printf“%f\n”
您还可以使用
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
...
这可能比使用
find
-printf
选项更具可移植性,尽管如果您坚持使用Linux,这不应该是一个问题


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

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

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

是一种方法,特别是如果您确实关心/root/wgetlog/*。

的子目录,但这些子目录不起作用:find:path必须在expression之前使用:find[-H][L][p][path…][expression]@wademills:是否删除了`-name`[root@385872-TEST wgetlog]#find/root/wgetlog-type d-empty-exec basename{}\find:“-exec”缺少参数您需要分号(
)。@wademills:不客气。请注意,StackOverflow.Oops上最能表达“that worked.thanking”的意思,请删除我从您的问题中复制的-name。
 { pushd /root/wgetlog/; find . -name -type d -empty; popd; }