karakter khusus dalam nama file (\ # 033OA)


10

Saya punya sedikit masalah dengan kesalahan yang sangat keras kepala selama rsync. Itu disebabkan oleh file dengan karakter khusus dalam nama file-nya. Ada yang lain tapi saya bisa mengatasinya dengan melakukan beberapa konversi dalam pengkodean nama file. Namun file yang satu ini saya bahkan tidak dapat menemukannya.

Jadi, inilah yang dikatakan rsync:

../.\#033OA.tex.pyD0MB" failed: No such file or directory (2)

Hal pertama yang diperhatikan adalah bahwa kode karakter tidak boleh hex atau oktal jadi saya sudah mencarinya di Google dan hanya menemukan ini . Jadi mungkin CURSOR UPkarakter (atau tidak). Saya sudah mencoba

ls -la *`printf '\033OA'`*

tidak berhasil. Saya juga mencoba mem-piping output ls dari direktori tersebut tetapi odtidak berhasil.

Apa lagi yang bisa saya lakukan? Atau karakter apa yang saya cari?

Terima kasih


1
Coba ls -b, yang seharusnya menunjukkan
— pelepasan

terima kasih ... yang telah membantu ... dapat memindahkannya dengan bantuan printf lalu ... jika Anda memposting ulang komentar ini sebagai jawaban, saya akan dengan senang hati menerimanya :)
— luxifer

Jawaban:


9

Anda dapat menggunakan -bopsi untuk ls, yang menampilkan karakter non-grafis sebagai urutan pelepasan gaya-C.


1

ls -aqakan mencetak semua nama file, dengan ?ganti setiap karakter yang tidak dapat dicetak . Pada banyak varian unix, ls -ABatau ls -Ab(periksa halaman manual Anda) akan mencetak lolos oktal. Dengan ls -aq, Anda dapat menggunakan output yang ditampilkan sebagai pola shell.

$ ls -Aq
.?OA.tex.pyD0MB
… more stuff …
$ mv -i .?OA.tex.pyD0MB weird-file
$ less weird-file

Cara lain untuk mendapatkan nama file entah bagaimana adalah dengan menggunakan penyelesaian shell Anda: masukkan mv .dan tekan Tabberulang kali hingga nama aneh dimasukkan.


ls -qtidak menunjukkan file sedangkan ls -blakukan. mungkin karena nama filenya tidak[weird-character]OA.tex`printf %b '\033OA'`.tex
— luxifer

@luxifer Ada .di awal nama file, jadi Anda perlu ls -Aqatau ls -aq. Dan jika Anda menggunakan shell wildcard, Anda perlu membuat .eksplisit: *tidak akan menyertakan file tetapi .*akan.
— Gilles 'SO- stop being evil'

tidak, tidak ada! Output yang saya posting berasal dari rsync dan itu adalah akhir dari baris. Rsync akan menyalin terlebih dahulu $DESTINATION/.$FILENAMEsebelum memindahkan file ke nama yang benar. Karenanya pada sumbernya tidak ada file .di awal namanya. Juga, seperti yang dikatakan, ls -qtidak akan menunjukkan file ls -bitu.
— luxifer
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.