サブディレクトリのすべてのファイル名を取得する

サブディレクトリのすべてのファイル名を取得する

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 3ファイルがこれらのディレクトリまたはサブディレクトリ内にあることがわかります。A各サブディレクトリにはすべてのファイル名が必要です。42 directories, 2720 files全体として、手動プロセスが多すぎると疲れてしまう可能性があります。

答え1

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

答え2

必要なファイル名が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 -R /usr/share/terminfo  | grep -v /
ls /usr/share/terminfo/*/* | grep -o '[^/]*$'

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

関連情報