Eu tenho um código PHP que gera o nome do arquivo no qual o wget anexará seus logs. Gerei mais de 2000 arquivos, mas o problema é que estou tendo problemas para trabalhar com eles, porque tive um erro ao colocar PHP_EOL
como parte do nome, esse código será adicionado
LF/line feed/%0A
ao nome
Exemplo desse nome de arquivo (quando acessado via navegador, quando colocado em / var / www / html), http://xxxx/wget_01_a%0a.txt
observe o %0a
antes do nome da extensão
Eu errei, e eu gostaria que houvesse um lote de renomeação que pesquisasse todos os arquivos e, se encontrado line feed
, o renomeará sem o feed de linha, para que apenashttp://xxxx/wget_01_a.txt
Não tenho muita certeza de como lidar com isso, porque parece que quando ls
coloco em massa todos os caracteres especiais não limitados a esse caractere indesejado ?
, o que eu só desejo atingir é o feed de linha.
\n
? Você pode fazer algo como eco,*.txt | od -c
para que possamos ver qual caractere não imprimível real existe?\n
pastebin.com/wXCDCJjr*.txt
(o que explicaria o motivo derename
não buscá-lo). Se você definir os dois padrões para, digamos, emtxt
vez de$'\n'
e''
, obtém alguma saída? O eco $ '\ n' realmente imprime duas novas linhas?rename $'\r' '' wget_*
para que ele funcioneCom base no que já foi respondido, eu o generalizei para renomear todos os arquivos que contêm feed de linha na pasta e subpasta atual, combinando o comando find com rename -
Aqui, o comando find localiza todos os arquivos que contêm avanço de linha e o comando renomear substitui cada avanço de linha no nome por um espaço.
O mesmo pode ser feito para outros caracteres problemáticos, como retorno de carro (\ r).
fonte