Bagaimana menemukan file yang mengandung baris baru dalam nama file?

10

Saya mencoba mencari file yang memiliki baris baru dalam nama file. Tapi saya tidak tahu pola apa yang digunakan.

Berikut ini berfungsi, tetapi tidak terlalu berguna jika saya ingin menggunakannya dalam kode indentasi.

find . -name '*
*'

Saya mencoba keduanya dan mereka hanya berhasil menemukan nama file yang berisi huruf n :

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

Kemudian saya menemukan cara menulis urutan escape backslash dan mencoba ini:

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

Tapi itu tidak menemukan apa pun. Bagaimana saya harus menulis polanya?

toxalot
sumber

Jawaban:

13

Dalam skrip shell, semuanya adalah string. Anda tidak perlu mengutip *untuk mencegah ekspansi nama file , tetapi Anda tidak ingin menempatkan urutan backslash melarikan diri di dalam tanda kutip ganda.

Anda bisa menyatukan senar dengan menempatkannya tepat setelah satu sama lain.

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

Tetapi untuk keterbacaan yang lebih baik, Anda dapat menggunakan ANSI-C Quoting untuk seluruh string.

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