Tengo un código PHP que genera el nombre del archivo en el que wget agregará sus registros. Generé más de 2000 archivos, pero el problema es que tengo problemas para trabajar con ellos porque tuve un error al ponerlos PHP_EOL
como parte de su nombre, ese código se agregará
LF/line feed/%0A
a su nombre
Ejemplo de dicho nombre de archivo (cuando se accede a través del navegador, cuando se coloca en / var / www / html) http://xxxx/wget_01_a%0a.txt
observe el %0a
nombre antes de la extensión
Me equivoqué y desearía que hubiera un lote de cambio de nombre que buscaría en todos los archivos y, si lo encontraba line feed
, lo cambiaría sin el avance de línea, por lo que seríahttp://xxxx/wget_01_a.txt
No estoy muy seguro de cómo manejar esto porque parece que cuando uso ls
masilla de caracteres especiales no limitados a ese carácter no deseado ?
, lo único que deseo es apuntar a ese salto de línea.
\n
? ¿Puedes hacer algo como echo*.txt | od -c
para ver qué personaje real no imprimible hay?\n
pastebin.com/wXCDCJjr*.txt
(lo que explicaría por quérename
no lo recoge). Si establece los dos patrones en, digamos, entxt
lugar de$'\n'
y''
, ¿obtiene algún resultado? ¿Echo $ '\ n' imprime dos líneas nuevas?rename $'\r' '' wget_*
para que funcionaraSobre la base de lo que ya se respondió, lo generalicé para cambiar el nombre de todos los archivos que contienen salto de línea en la carpeta y subcarpeta actuales, combinando el comando find con rename -
Aquí, el comando find localiza todos los archivos que contienen salto de línea y el comando renombrar reemplaza cada salto de línea en el nombre con un espacio.
Lo mismo puede hacerse para cualquier otro personaje problemático como el retorno de carro (\ r).
fuente