POSIX-maneira correta de isolar arquivos com novas linhas via find?

0

Há uma pergunta Como encontrar arquivos que contêm nova linha no nome do arquivo , em que a resposta aceita lida com arquivos isolados com novas linhas via ANSI-C, e isso funciona bem em ksh e bash , mas como eu lidaria com isso em um shell POSIX? Especificamente, estou usando dash .

    
por Sergiy Kolodyazhnyy 05.06.2018 / 01:08

1 resposta

1

Após a discussão nos comentários e olhando para a questão relacionada referenciada no meu, uma maneira de usar novas linhas em -name é usar a nova linha literal como em:

$ find -type f -name '*
> *'

Outra é via substituição de comando:

$ find -name "$(printf '*\n*' )"
./with?newline
$ ls
another execve with?newline

Mas cuidado com a definição POSIX , a substituição de comando é realizada por shell com "... removendo sequências de um ou mais caracteres no final da substituição ". Isso é algo como:

find -type f -name '*'"$(printf '\n')"'*'

falha e passa ** na lista de argumentos em vez de *[newline]* como se fosse pense.

As novas linhas finais na substituição de comandos podem ser tratadas de várias maneiras, conforme mostrado em shell: mantenha as novas linhas ('\ n' ) na substituição do comando .

    
por 05.06.2018 / 01:28