脚本 bash 删除具有特殊字符的目录中的旧文件

脚本 bash 删除具有特殊字符的目录中的旧文件

我使用脚本删除垃圾箱或垃圾目录或类似目录中的旧文件。

除名称中包含特殊字符或空格外,其他均能正常工作

/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

for语句逐字“读取”输入。您需要逐行阅读。

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

-r可以防止行中的反斜杠被解释。

相关内容