Existem razões para não grep
contra ls
, mas se você as desconsiderar, isso funciona. Use o comando ls
como uma matriz de entrada, chame ls -ld
em cada entrada canalizada para grep
para excluir diretórios com a saída enviada para nulo e, se tiver êxito, repita a entrada original:
for list in 'ls' ; do ls -ld $list | grep -v ^d > /dev/null && echo $list ; done ;
Você pode inverter o grep e a saída condicional, os mesmos resultados:
for list in 'ls' ; do ls -ld $list | grep ^d > /dev/null || echo $list ; done ;
EDIT: Meu mau, isso funciona sem uma correspondência de padrão, mas se você adicionar uma pesquisa curinga como no OP acima, e você tem um diretório que corresponde ao padrão, a saída ainda inclui sistema mensagens para que você precise filtrar mais para obter apenas a lista de arquivos.
EDITAR novamente: barras invertidas fixas em / dev / null.