Come trovare file che contengono newline nel nome file?


10

Sto cercando di trovare i file che hanno una nuova riga nel nome del file. Ma non riesco a capire quale modello usare.

Di seguito funziona, ma non è molto utile se si desidera utilizzarlo nel codice rientrato.

find . -name '*
*'

Ho provato questi due e sono riusciti solo a trovare nomi di file che contenessero la lettera n :

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

Poi ho scoperto come scrivere sequenze di escape con barra rovesciata e ho provato questo:

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

Ma questo non trova nulla. Come devo scrivere il modello?

Risposte:


13

Negli script di shell, tutto è una stringa. È Non c'è bisogno di citare il *per impedire l'espansione dei nomi , ma non si vuole mettere la sequenza backslash escape all'interno virgolette doppie.

Puoi semplicemente concatenare le stringhe posizionandole una dopo l'altra.

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

Ma per una migliore leggibilità, è possibile utilizzare la quotazione ANSI-C per l'intera stringa.

find . -name $'*\n*'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.