Como encontrar arquivos que contêm nova linha no nome do arquivo?

8

Estou tentando encontrar arquivos que tenham uma nova linha no nome do arquivo. Mas não consigo descobrir qual padrão usar.

O seguinte funciona, mas não é muito útil se eu quiser usá-lo em código recuado.

find . -name '*
*'

Eu tentei esses dois e eles só conseguiram encontrar nomes de arquivos que continham a letra n :

find . -name '*\n*'
find . -name "*\n*"

Depois, descobri como escrever seqüências de escape de barras invertidas e tentei fazer isso:

find . -name "*$'\n'*"

Mas isso não encontra nada. Como devo escrever o padrão?

    
por toxalot 10.03.2014 / 11:19

1 resposta

11

No script de shell, tudo é uma string. Você faz precisa citar o * para evitar expansão de nome de arquivo , mas você não quer colocar a seqüência de escape da barra invertida entre aspas duplas.

Você pode simplesmente concatenar as strings colocando-as uma após a outra.

find . -name '*'$'\n''*'

Mas, para uma melhor legibilidade, você pode usar ANSI-C Quoting para a cadeia inteira.

find . -name $'*\n*'
    
por 10.03.2014 / 11:19