Script bash deletar arquivos antigos em diretórios com caracteres especiais

1

Eu uso um script para excluir arquivos antigos na Lixeira ou em diretórios tipo Lixo ou semelhante.

Funciona bem, exceto quando tem caracteres especiais ou espaços nos nomes

/home/theos98/mail/theos98.es/dmalmierca/.Trash.Renfe Mart&AO0-n Fernandez
/home/theos98/mail/theos98.es/dmalmierca/.Trash.Renfe Cordoba
/home/theos98/mail/theos98.es/dmalmierca/.Trash.Renfe - Sevilla

Neste cenário, não funciona

Eu uso dois formatos, mas não trabalho

for p in $(cat /tmp/listado.txt); do  find "$p" -type f -mtime +50 -delete; done

ou

for p in $(cat /tmp/listado.txt); do  find $p -type f -mtime +50 -delete; done

E dois recebem esse erro

 /home/theos98/mail/theos98.es/dmalmierca/.Trash.Renfe Not found

Eu não sei como passar para a linha correta do script.

    
por Abdel Karim Mateos Sanchez 23.06.2014 / 10:34

1 resposta

2

A instrução for "lê" entrada palavra por palavra. Você precisa ler linha por linha.

while read -r line; do find "$line" -type f ...; done < /tmp/listado.txt

O -r impede que barras invertidas nas linhas sejam interpretadas.

    
por 23.06.2014 / 10:42

Tags