如何在指定目录执行find命令删除特定用户4天以上的旧文件
shell脚本实现方案
你可以根据需求选择以下两种实现方式,均和你给出的删除逻辑完全匹配:
方案1:直接指定搜索路径(更安全,推荐)
不需要切换目录,直接将目标路径作为find命令的第一个参数,从根源避免切换目录失败导致误删其他路径文件的风险:
#!/bin/bash # 清理指定目录下pwadmin用户所有修改时间超过4天的一级文件 find /admin/data/inventory -maxdepth 1 -mtime +4 -type f -user "pwadmin" -delete
方案2:先进入目标目录再执行(需加容错判断)
如果你的场景必须先切换到目标目录再执行操作,一定要增加目录切换成功的校验逻辑,避免目录不存在、无权限等原因导致切换失败时,删除命令在当前工作目录执行:
#!/bin/bash # 定义目标目录变量 TARGET_DIR="/admin/data/inventory" # 切换目录失败则直接退出,不执行后续删除操作 cd "${TARGET_DIR}" || exit 1 # 执行删除操作 find -maxdepth 1 -mtime +4 -type f -user "pwadmin" -delete
注意事项
正式执行删除前强烈建议先做测试,把命令中的-delete参数替换为-print,先打印出所有匹配到的文件,确认列表符合预期后再换回-delete执行实际删除:
# 测试命令,仅打印匹配文件不删除 find /admin/data/inventory -maxdepth 1 -mtime +4 -type f -user "pwadmin" -print
内容的提问来源于stack exchange,提问作者Aviator
相关产品推荐
相关产品推荐

