Saya memiliki kode PHP yang menghasilkan nama file di mana wget akan menambahkan log-nya. Saya menghasilkan 2000+ file, tetapi masalahnya adalah saya kesulitan bekerja dengannya karena saya memiliki kesalahan menempatkan PHP_EOL
sebagai bagian dari namanya, kode itu akan ditambahkan
LF/line feed/%0A
pada namanya
Contoh nama file tersebut (ketika diakses melalui browser, ketika memakai / var / www / html) http://xxxx/wget_01_a%0a.txt
perhatikan %0a
sebelum nama ekstensi
Saya mengacaukan, dan saya berharap ada batch rename yang akan mencari semua file dan jika ditemukan line feed
maka akan mengganti nama file tersebut tanpa feed baris sehingga hanya akan menjadihttp://xxxx/wget_01_a.txt
Saya tidak begitu yakin bagaimana menangani ini karena sepertinya ketika saya ls
menggunakan semua karakter khusus yang tidak terbatas pada karakter yang tidak diinginkan ?
, apa yang ingin saya targetkan adalah umpan baris itu.
\n
? Bisakah Anda melakukan sesuatu seperti gema*.txt | od -c
sehingga kami melihat karakter apa yang sebenarnya tidak dapat dicetak?\n
pastebin.com/wXCDCJjr*.txt
(yang akan menjelaskan mengaparename
tidak mengambilnya). Jika Anda mengatur kedua pola menjadi, katakanlah,txt
alih-alih$'\n'
dan''
, apakah Anda mendapatkan output? Apakah echo $ '\ n' memang mencetak dua baris baru?rename $'\r' '' wget_*
untuk bekerjaBerdasarkan apa yang sudah dijawab, saya telah menggeneralisasi untuk mengganti nama semua file yang berisi umpan baris dalam folder dan sub-folder saat ini, dengan menggabungkan perintah find dengan rename -
Di sini, perintah find menempatkan semua file yang berisi umpan baris dan mengganti nama perintah menggantikan setiap umpan baris dalam nama dengan spasi.
Hal yang sama dapat dilakukan untuk karakter bermasalah lainnya seperti carriage return (\ r).
sumber