1

Я использую скрипт для удаления старых файлов на Корзину или каталогов типа Junk, или аналогичных.

Он работает хорошо, за исключением случаев, когда в именах есть специальные символы или пробелы

/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

В этом сценарии не работают

Я использую два формата, но не работаю

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

или же

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

И двое получают эту ошибку

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

Я не знаю, как можно перейти к сценарию правильной строки.

1 ответ1

2

Оператор for "читает" вводимые слова за словом. Вы должны прочитать это построчно.

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

-r предотвращает обратную косую черту в строках от интерпретации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .