Com o GNU find
, você pode ligar:
find /some/dir -mindepth 1 -maxdepth 1 -type f \
\( -executable -printf 'X%pfind /some/dir -mindepth 1 -maxdepth 1 -type f \
\( -executable -printf 'X%p%pre%' -o -printf 'F%p%pre%' \) -o \
-type d -printf 'D%p%pre%'
' -o -printf 'F%p%pre%' \) -o \
-type d -printf 'D%p%pre%'
A saída será uma lista de registros delimitada por NUL (NUL é o único caractere que pode não aparecer em um caminho de arquivo), cuja primeira letra identifica o tipo ( X
, F
, D
para arquivos regulares executáveis, outros arquivos regulares, diretórios).
Para links simbólicos, se você quiser considerar o tipo do destino do symlink, use -xtype
em vez de -type
acima. -executable
retorna arquivos que são executáveis pelo processo que executa o comando find. Outros tipos de arquivos (fifo, soquete, portas, dispositivos ...) são ignorados. As entradas do diretório .
e ..
também são ignoradas.