J'ai un code PHP qui génère le nom du fichier sur lequel wget ajoutera ses journaux. J'ai généré plus de 2000 fichiers, mais le problème est que j'ai du mal à travailler avec eux parce que j'ai eu une erreur de mettre PHP_EOL
dans le cadre de son nom, ce code ajoutera
LF/line feed/%0A
à son nom
Exemple d'un tel nom de fichier (lorsqu'il est accessible via un navigateur, lorsqu'il est placé sur / var / www / html), http://xxxx/wget_01_a%0a.txt
notez %0a
avant le nom de l'extension
J'ai foiré, et je souhaite qu'il y ait un lot de renommage qui recherchera tous les fichiers et s'il le trouve, line feed
il le renommerait sans le saut de ligne, il serait donc justehttp://xxxx/wget_01_a.txt
Je ne sais pas trop comment gérer cela, car il semble que lorsque je mets ls
du mastic, tout caractère spécial non limité à ce caractère indésirable devient ?
, ce que je souhaite uniquement cibler, c'est ce saut de ligne.
\n
? Pouvez-vous faire quelque chose comme l'écho*.txt | od -c
pour que nous voyions quel caractère réel non imprimable existe-t-il?\n
pastebin.com/wXCDCJjr*.txt
(ce qui expliquerait pourquoirename
ne le ramasse pas). Si vous définissez les deux modèles sur, disons,txt
au lieu de$'\n'
et''
, obtenez-vous une sortie? Echo $ '\ n' affiche-t-il effectivement deux nouvelles lignes?rename $'\r' '' wget_*
pour que ça marcheSur la base de ce qui a déjà été répondu, je l'ai généralisé pour renommer tous les fichiers contenant des sauts de ligne dans le dossier et le sous-dossier actuels, en combinant la commande find avec rename -
Ici, la commande find localise tous les fichiers contenant un saut de ligne et la commande renommer remplace chaque saut de ligne du nom par un espace.
La même chose peut être effectuée pour tout autre caractère problématique tel que le retour chariot (\ r).
la source