A opção mais simples seria find
:
$ cd /usr/lib; find .
.
./libxcb-icccm.so.4.0.0
./libbz2.so.1.0.6
./libdca.so.0
./libxcb-composite.so
./libyajl.so
./libswscale.so
./libxvidcore.so.4.3
./libjasper.so.1
./libdrm_intel.so.1
...
Tem vários testes para filtragem, como:
-
-type
para filtrar com base no tipo (arquivo regularf
, diretóriod
, etc.) -
-mindepth
e-maxdepth
para definir as profundidades às quaisfind
deve pesquisar (não é realmente um teste) -
-name
e-path
para filtrar com base no nome do arquivo e no caminho, suportando curingas. - e muitos outros testes, para permissões, propriedade, tempos, etc.
Ele oferece uma variedade de formatos de saída, usando a opção -printf
.
Dependendo do shell e das opções ativadas, você também pode usar globbing para essa finalidade. Por exemplo, em bash
:
$ shopt -s globstar; printf "%s\n" **
accountsservice
accountsservice/accounts-daemon
aisleriot
aisleriot/ar-cards-renderer
aisleriot/guile
aisleriot/guile/2.0
aisleriot/guile/2.0/accordion.go
aisleriot/guile/2.0/agnes.go
aisleriot/guile/2.0/aisleriot
aisleriot/guile/2.0/aisleriot/api.go
...
E em zsh
:
$ printf "%s\n" **/*
accountsservice
accountsservice/accounts-daemon
aisleriot
aisleriot/ar-cards-renderer
aisleriot/guile
aisleriot/guile/2.0
aisleriot/guile/2.0/accordion.go
aisleriot/guile/2.0/agnes.go
aisleriot/guile/2.0/aisleriot
aisleriot/guile/2.0/aisleriot/api.go
...