Script Bash löscht ältere Dateien in Verzeichnissen mit speziellen Zeichen

1

Ich verwende ein Skript zum Löschen älterer Dateien im Papierkorb oder in Verzeichnissen vom Typ Junk oder ähnlichem.

Es funktioniert einwandfrei, es sei denn, die Namen enthalten Sonderzeichen oder Leerzeichen

/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

In diesem Szenario nicht funktionieren

Ich verwende zwei Formate, arbeite aber nicht

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

oder

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

Und zwei bekommen diesen Fehler

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

Ich weiß nicht, wie ich an die korrekte Zeile des Skripts übergehen kann.

Abdel Karim Mateos Sanchez
quelle

Antworten:

2

Die forAnweisung "liest" die Eingabe wortweise. Sie müssen es Zeile für Zeile lesen.

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

Die -rverhindert eine Schrägstrich in den Leitungen von interpretiert.

Notinlist
quelle