Remover novas linhas em nomes de arquivos

8

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 de seu nome, esse código adicionará LF/line feed/%0A em seu nome

Exemplo de tal 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 estraguei tudo e desejo que haja um lote de renomeação que pesquise todos os arquivos e, se ele encontrar line feed , o renomeie sem o feed de linha, para que seja apenas http://xxxx/wget_01_a.txt

Não tenho certeza de como lidar com isso porque parece que quando eu ls no putty todo caractere especial não se limita a esse caracter indesejado se torna ? , o que desejo segmentar é esse feed de linha.

    
por The Wolf 12.03.2015 / 19:09

2 respostas

10

Usando o utilitário rename do util-linux, que o CentOS 6 fornece e assumindo o bash:

rename $'\n' '' wget_*

Isso pede para excluir caracteres de nova linha dos nomes dos arquivos listados. Eu recomendo testar em um pequeno subconjunto para garantir que ele faça o que você quer (note que rename no CentOS 7 suporta um -v para mostrar a você quais mudanças ele está fazendo).

Se você estava em uma distribuição que fornece o rename baseado em Perl:

rename -n 's/\n//g' wget_*

E, em seguida, execute sem -n para realmente executar a renomeação.

    
por 12.03.2015 / 19:22
0

Com base no que já foi respondido, eu o generalizei para renomear todos os arquivos que contêm alimentação de linha na pasta e na subpasta atuais, combinando o comando find com rename -

find -name $'*\n*' -exec rename  $'s|\n| |g' '{}' \;

Aqui, o comando find localiza todos os arquivos que contêm feed de linha e o comando rename substitui cada linha alimentada no nome por um espaço.

O mesmo pode ser feito para qualquer outro caractere problemático, como retorno de carro (\ r).

Espero que isso ajude.

    
por 12.10.2017 / 12:22