Linux find命令脚本故障:无法删除1天前修改的文件求排查
问题排查与修复
你的脚本未删除文件的核心问题出在find命令的参数设置上:
1. -maxdepth 0 参数错误
-maxdepth 0 的作用是仅搜索你输入的路径本身,不遍历该路径下的内容。如果输入的是目录路径,find会尝试判断这个目录是否是文件(-type f),显然目录不属于文件类型,因此不会找到任何匹配结果。
2. 修正方案
移除-maxdepth 0,或者根据需求设置为-maxdepth 1(仅搜索目录下的直接文件,不递归子目录):
修正后的脚本
#!/bin/bash # 读取用户输入的目录路径 read -p "Please enter the directory path from which you want to remove unused files: " path # 创建修改时间超过1天的文件数组(不递归子目录) readarray -t files < <(find "$path" -maxdepth 1 -type f -mtime +1) # 交互式遍历删除文件 for file in "${files[@]}"; do rm -i "$file" done
额外注意事项
-mtime +1的实际含义:它匹配的是**修改时间距离当前时间超过1整天(至少48小时前)**的文件。如果你的文件是1月12日创建,当前日期是1月13日,那么-mtime +1不会匹配(未达到48小时),此时可以改用-mtime +0(匹配超过24小时的文件)或者-mmin +1440(直接指定分钟数)。- 先验证find命令:单独运行
find "$path" -maxdepth 1 -type f -mtime +1,确认是否能列出你想要删除的文件,再执行脚本。 - 权限检查:确保你对目标目录和文件拥有删除权限。
内容的提问来源于stack exchange,提问作者Sumonto Chatterjee
相关产品推荐
相关产品推荐

