BASH 脚本用于搜索 4 位数字且超过 7 天的文件夹中的文件

BASH 脚本用于搜索 4 位数字且超过 7 天的文件夹中的文件
#!/bin/bash

unset result
result=$(find /home -path "$HOME/TestDir/[0-9][0-9][0-9][0-9]/test*" -mtime -7 -print -delete 2>/dev/null)
[ "$result" ] || echo "There are no recovery files older than 7 days"

在这/test部分我实际上需要找到 2 个文件名。那些以 开头的E*和那些以 开头的P_*。这可以做到吗?

答案1

人发现

退出状态
寻找如果所有文件均已成功处理,则以状态 0 退出;如果发生错误,则以大于 0 的状态退出。这是故意一个非常广泛的描述,但如果返回值非零,则不应依赖结果的正确性寻找

因此,如果没有匹配的文件,退出状态将保持 0。因此最好检查输出是否为空:

unset result
result=$(find ~/TestDir -path "$HOME/TestDir/[0-9][0-9][0-9][0-9]/test*" -mtime -7 -print -delete 2>/dev/null)
[ "$result" ] || echo "There are no recovery files older than 7 days"

答案2

find $(find -name "[0-9][0-9][0-9][0-9]") -name "[test]*" -mtime -7 -exec rm -i {} \; || echo "There are no recovery files older than 7 days"

||或者) 运算符查看左侧命令的结果,仅当左侧命令失败时(基于返回码)才运行右侧命令。

如果find没有找到任何匹配的文件,它将返回1,这将导致||run运行该echo命令。

相关内容