Jak znaleźć pliki zawierające nowy wiersz w nazwie pliku?

10

Próbuję znaleźć pliki z nową linią w nazwie pliku. Ale nie mogę wymyślić, jakiego wzoru użyć.

Poniższe działa, ale nie jest bardzo przydatne, jeśli chcę go używać w wciętym kodzie.

find . -name '*
*'

Wypróbowałem te dwa i udało im się znaleźć tylko nazwy plików zawierające literę n :

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

Potem znalazłem, jak napisać sekwencje specjalne odwrotnego ukośnika i wypróbowałem to:

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

Ale to nic nie znajduje. Jak mam napisać wzór?

toksalot
źródło

Odpowiedzi:

13

W skryptach powłoki wszystko jest ciągiem. Państwo nie trzeba zacytować *, aby zapobiec ekspansji nazwy pliku , ale nie chcesz, aby umieścić sekwencję ucieczki backslash wewnątrz cudzysłowach.

Możesz po prostu połączyć łańcuchy, umieszczając je jeden za drugim.

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

Ale dla lepszej czytelności możesz użyć cytowania ANSI-C dla całego łańcucha.

find . -name $'*\n*'
toksalot
źródło