find /usr/share/terminfo -type f -exec basename {} \;
Eu preciso obter todos os nomes de arquivos, não incluindo os caminhos, por exemplo, file1
está correto e ./folder/file1
está incorreto em subdiretórios. Meu caso de uso está recuperando todos os nomes de arquivos terminfo disponíveis que estão localizados dentro do diretório /usr/share/terminfo
. Mas eles estão localizados dentro de outro conjunto de subdiretórios da seguinte forma:
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
Você pode ver arquivos localizados dentro desses subdiretórios 1
3
ou A
e preciso de todos os nomes de arquivos de cada subdiretório. Há um total de 42 directories, 2720 files
para que o processo manual seja exaustivo.
Como sabemos que os arquivos que gostaríamos de ter os nomes de são dois níveis em /usr/share/terminfo
, e que não há mais diretórios abaixo, isso seria uma solução rápida (somente executa find
e cut
uma vez):
$ find /usr/share/terminfo -type f | cut -d '/' -f 6
Alternativamente, com uma substituição sed
ligeiramente mais "pesada":
$ find /usr/share/terminfo -type f | sed 's#^.*/##'
A substituição sed
remove tudo até e incluindo o último /
de cada linha de saída de find
.
(man tree para detalhes)
tree -i /usr/shar/terminfo
ou se você quiser remover os diretórios:
tree -iF /usr/shar/terminfo | grep -v /
ls -R /usr/share/terminfo | grep -v /
ls /usr/share/terminfo/*/* | grep -o '[^/]*$'
basename -a $(ls /usr/share/terminfo/*/*)