ls
termina cada nome de arquivo com uma nova linha ( \n
) e não um NUL (
) (se a saída padrão não for um terminal). find . -maxdepth 1 -print0
Uma maneira de listar os arquivos no diretório atual, usando o NUL como um separador, é:
find . -maxdepth 1 \! -name '.*' -print0
.
Isso corresponderá aos arquivos que começam com um período também. Para ignorá-los, use:
find
Outras maneiras poderiam ser:
ls | tr '\n' 'printf '%sls | tr '\n' 'printf '%s%pre%' *
'
' *
'
ou
%pre% Como observado por @ChrisDown em seu comentário, apenas as opções printf
e \n
farão o trabalho corretamente se você tiver nomes de arquivos contendo %code% no diretório atual. Se este não for o seu caso (na verdade, eu me pergunto se realmente existem pessoas usando novas linhas em nomes de arquivos por aí), os três são equivalentes.