Comment trouver des fichiers qui contiennent une nouvelle ligne dans le nom de fichier?

10

J'essaie de trouver des fichiers qui ont une nouvelle ligne dans le nom de fichier. Mais je ne sais pas quel modèle utiliser.

Le suivant fonctionne, mais n'est pas très utile si je veux l'utiliser en code indenté.

find . -name '*
*'

J'ai essayé ces deux et ils ont seulement réussi à trouver des noms de fichiers contenant la lettre n :

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

Ensuite, j'ai trouvé comment écrire des séquences d'échappement de barre oblique inverse et j'ai essayé ceci:

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

Mais cela ne trouve rien. Comment dois-je écrire le motif?

toxalote
la source

Réponses:

13

Dans les scripts shell, tout est une chaîne. Vous ne devez citer le *pour empêcher l' expansion du nom de fichier , mais vous ne voulez pas mettre la séquence d'échappement backslash à l' intérieur des guillemets doubles.

Vous pouvez simplement concaténer les cordes en les plaçant l'une après l'autre.

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

Mais pour une meilleure lisibilité, vous pouvez utiliser la citation ANSI-C pour toute la chaîne.

find . -name $'*\n*'
toxalote
la source