我写了一个脚本来创建一个超过一天前修改过的文件数组,迭代数组并交互式地删除它们。
下面是代码:
#!/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日,并在那之后未动过,但他们仍然存在。你能不能请指出,如果有什么是失踪在这里?
1条答案
按热度按时间bhmjp9jg1#
-mtime
只考虑完整的天数,即+1
表示“至少 2 天前”。从man find
:-atime n
文件最后一次被访问是在24小时之前、之后或正好 *n**之前。当find计算出文件最后一次被访问是在多少个24小时之前时,任何小数部分都将被忽略,因此要匹配
-atime +1
,文件必须至少在两天之前被访问过。-mtime n
文件的数据上次修改时间是小于、大于或正好是 *n**24小时前。请参阅
-atime
的注解以了解舍入如何影响文件修改时间的解释。你也可以考虑使用
-exec
来查找,而不是存储在数组中,这样可以避免文件名包含特殊字符时出现的各种问题,比如空格、换行符或通配符:(一天有1440分钟(=60*24))