Linux查找命令问题

huus2vyu  于 2023-01-16  发布在  Linux
关注(0)|答案(1)|浏览(106)

我写了一个脚本来创建一个超过一天前修改过的文件数组,迭代数组并交互式地删除它们。
下面是代码:

#!/bin/bash

#take input from user for directory
read -p "Please enter the directory path from which you want to remove unused files" path

#create an array of files modified 2 days back
readarray -t files < <(find "$path" -maxdepth 0 -type f -mtime +1)

#remove the files iteratively and interactively
for file in "${files[@]}"; do
 rm -i "$file"
done

这个脚本并没有删除任何东西。我有一些文件创建于1月12日,并在那之后未动过,但他们仍然存在。你能不能请指出,如果有什么是失踪在这里?

bhmjp9jg

bhmjp9jg1#

-mtime只考虑完整的天数,即+1表示“至少 2 天前”。从man find

-atime n

文件最后一次被访问是在24小时之前、之后或正好 *n**之前。当find计算出文件最后一次被访问是在多少个24小时之前时,任何小数部分都将被忽略,因此要匹配-atime +1,文件必须至少在两天之前被访问过。

-mtime n

文件的数据上次修改时间是小于、大于或正好是 *n**24小时前。请参阅-atime的注解以了解舍入如何影响文件修改时间的解释。
你也可以考虑使用-exec来查找,而不是存储在数组中,这样可以避免文件名包含特殊字符时出现的各种问题,比如空格、换行符或通配符:

find "$path" -maxdepth 0 -type f -mtime +1440 -exec rm {} +

(一天有1440分钟(=60*24))

相关问题