wc - definindo um caractere de terminação

0

Cheguei até aqui: wc --files0-from=FILE permite obter a contagem de palavras de uma lista de arquivos. Cada entrada nesta lista deve ser terminada com um caractere NUL ASCII.

Pergunta : Uma maneira de definir um caractere de terminação, como NUL manualmente, ou algo mais? Eu encontrei isso aqui [citado do info wc output]:

… produce a list of ASCII NUL terminated file names is with GNU find', using its-print0' predicate.

Eu encontrei alguém dizendo cada nome de arquivo está sendo terminado por um caractere NUL ASCII . É certo que isso se encaixa, digamos, a saída de ls ? Eu sei, não se deve analisar ls , mas escrever a saída em um arquivo para ser lido por% seria legal.

    
por erch 16.06.2013 / 23:26

1 resposta

5

ls termina cada nome de arquivo com uma nova linha ( \n ) e não um NUL ( find . -maxdepth 1 -print0 ) (se a saída padrão não for um terminal).

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 '%s
ls | 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.

    
por 16.06.2013 / 23:46