Como encontrar arquivos que contenham nova linha no nome do arquivo?

10

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 no 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*"

Então eu descobri como escrever seqüências de escape de barra invertida e tentei o seguinte:

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

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

toxalote
fonte

Respostas:

13

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

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

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

Mas, para melhor legibilidade, você pode usar a cotação ANSI-C para toda a cadeia.

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