获取子目录下的所有文件名

获取子目录下的所有文件名

我需要从子目录中获取所有文件名,不包括路径,例如file1正确的和./folder/file1不正确的。我的用例是检索位于/usr/share/terminfo目录内的所有可用 terminfo 文件名。但它们位于另一组子目录内,如下所示 -

terminfo ア ls
1  3  5  7  9  A  c  e  f  h  j  l  m  n  o  P  Q  s  u  w  X
2  4  6  8  a  b  d  E  g  i  k  L  M  N  p  q  r  t  v  x  z

terminfo ア cd 1
1 ア ls
1178  1730-lm

您可以看到文件位于这些目录1 3A子目录内,我需要每个子目录中的所有文件名。总共有42 directories, 2720 files这么多手动过程会很累人。

答案1

find /usr/share/terminfo -type f -exec basename {} \;

答案2

因为我们知道我们想要的文件名称是 下的两个级别/usr/share/terminfo,并且其下没有其他目录,所以这将是一个快速解决方案(仅执行find一次cut):

$ find /usr/share/terminfo -type f | cut -d '/' -f 6

或者,用一个稍微“重”sed的替换:

$ find /usr/share/terminfo -type f | sed 's#^.*/##'

替换会删除中每行输出的sed最后一行(包括最后一行)之前的所有内容。/find

答案3

1 使用

(详细信息为人树)

tree -i /usr/shar/terminfo

或者如果你想删除目录:

tree -iF /usr/shar/terminfo | grep -v /

2 使用LS

ls -R /usr/share/terminfo  | grep -v /
ls /usr/share/terminfo/*/* | grep -o '[^/]*$'

basename -a $(ls /usr/share/terminfo/*/*)

相关内容