简介
你是否想过,如何在一个目录中找到那些很久都没有动过的文件?无论你是在清理旧文件、归档数据,还是检查过期文件,Linux 的find命令就是你的首选解决方案。在本技巧中,我们将展示如何使用一个简单而强大的命令,按年龄列出 Linux 中的文件。
命令
find /path/to/files -type f -name '*.jpg' -mtime +30 -exec ls -l {} \;
借助此命令,你可以根据文件的最后修改日期定位文件,按类型或名称筛选文件,并显示有关文件的详细信息。
逐项解析
1. /path/to/files
它指定要搜索的目录。请将其替换为你想浏览的实际文件夹路径。
- 示例:如果你想搜索你的照片库,请使用
~/Pictures.
2. -type f
-type选项指定要搜索的项目类型。
f:仅指文件(忽略目录)。
3. -name '*.jpg'
它会根据文件名或扩展名筛选结果。
- 示例:
*.jpg会查找以.jpg. - 你可以将其替换为其他模式,例如
*.txt表示文本文件,*.log表示日志文件。
4. -mtime +30
这是按文件年龄筛选文件的关键。
+30:查找 30 天前最后修改过的文件。- 将
30替换为任意数字,以满足你的需求:- 1 年:使用
-mtime +365. - 1 周:使用
-mtime +7.
- 1 年:使用
5. -exec ls -l {} \;
它告诉 Linux 如何处理找到的文件。
-exec:对每个文件执行一条命令。ls -l:列出每个文件的详细信息(例如大小、权限、所有者和最后修改日期)。{}:找到的每个文件的占位符。\;:表示命令结束。
专业提示
想在不运行ls -l的情况下测试命令?省略-exec部分:
find /path/to/files -type f -name '*.jpg' -mtime +30
这样只会列出文件路径,不会显示其他详细信息。
为什么使用这个命令?
find命令用途非常广泛,对系统维护任务非常有用:
- 释放磁盘空间:识别并删除旧文件。
- 归档较早的数据:将数月或数年未动过的文件移至备份存储。
- 监控过期文件:检查关键目录中的过期文件。
实际示例
示例 1:查找旧文档
搜索.docx文件。目标文件夹:Documents,查找超过 90 天未修改的文件:
find ~/Documents -type f -name '*.docx' -mtime +90 -exec ls -l {} \;
示例 2:查找超过 6 个月的大文件
查找大于 100MB 的文件,位置:/home/user,查找超过 6 个月未修改的文件:
find /home/user -type f -size +100M -mtime +180 -exec ls -lh {} \;
-size +100M:筛选大于 100MB 的文件。ls -lh:以人类可读的格式显示文件大小(例如 MB、GB)。
示例 3:搜索旧 PDF 文件
查找.pdf文件,位置:/home/user/Downloads,查找最近一年内未修改的文件:
find ~/Downloads -type f -name '*.pdf' -mtime +365 -exec ls -l {} \;
示例 4:查找最近修改过的文件
搜索.txt文件,查找最近 7 天内修改过的文件,位置:/var/www:
find /var/www -type f -name '*.txt' -mtime -7 -exec ls -l {} \;
-mtime -7:查找最近 7 天内修改过的文件。
示例 5:删除旧临时文件
删除以下位置的文件:/tmp中超过 30 天未修改的文件:
find /tmp -type f -mtime +30 -exec rm {} \;
rm:删除文件。- 警告:请谨慎使用,因为这会永久删除文件。
示例 6:归档旧媒体文件
移动.mp4文件(超过 60 天),源文件夹:~/Videos,目标为归档文件夹:
find ~/Videos -type f -name '*.mp4' -mtime +60 -exec mv {} ~/Archives/ \;
mv:将文件移动到指定文件夹。
示例 7:查找在特定时间范围内创建的文件
搜索.log文件,查找 30 到 60 天前创建的文件,位置:/var/log:
find /var/log -type f -name '*.log' -mtime +30 -mtime -60 -exec ls -l {} \;
-mtime +30:超过 30 天的文件。-mtime -60:最近 60 天内修改过的文件。
示例 8:查找超过 1 周的空文件
查找以下位置的空文件:/home/user中最近一周未修改的文件:
find /home/user -type f -empty -mtime +7 -exec ls -l {} \;
-empty:筛选大小为零的文件。
示例 9:按访问时间搜索文件
查找.png文件,位置:/var/www/html,查找最近 90 天内未访问过的文件:
find /var/www/html -type f -name '*.png' -atime +90 -exec ls -l {} \;
-atime:按访问时间而非修改时间筛选文件。
示例 10:查找最近创建的文件
查找以下位置的文件:/home/user中最近 3 天内创建的文件:
find /home/user -type f -ctime -3 -exec ls -l {} \;
-ctime:按创建时间筛选文件。
示例 11:按权限查找文件
搜索以下位置的文件:/etc中具有特定权限的文件(例如,可被其他人写入):
find /etc -type f -perm /o+w -exec ls -l {} \;
-perm /o+w:查找可被其他人写入的文件。
示例 12:查找最近一小时内修改过的文件
查找以下位置中最近一小时内修改过的文件:/home/user/Documents:
find ~/Documents -type f -mmin -60 -exec ls -l {} \;
-mmin -60:筛选最近 60 分钟内修改过的文件。
示例 13:查找具有特定所有权的文件
搜索属于以下用户的文件:jose,位置:/var/log中超过 90 天未修改的文件:
find /var/log -type f -user jose -mtime +90 -exec ls -l {} \;
-user jose:筛选属于指定用户的文件。
示例 14:排除特定目录
查找.jpg文件,位置:/home/user中超过 30 天的,排除Downloads文件夹:
find /home/user -type f -name '*.jpg' -mtime +30 -not -path "~/Downloads/*" -exec ls -l {} \;
-not -path:排除指定目录中的文件。
示例 15:查找在特定日期修改过的文件
搜索以下位置中恰好 10 天前修改过的文件:/home/user:
find /home/user -type f -mtime 10 -exec ls -l {} \;
-mtime 10:查找恰好 10 天前修改过的文件。
示例 16:查找具有特定扩展名的文件
搜索.zip和.tar.gz文件,查找超过 60 天的文件,位置:/backups:
find /backups -type f \( -name '*.zip' -o -name '*.tar.gz' \) -mtime +60 -exec ls -l {} \;
\( -name '*.zip' -o -name '*.tar.gz' \):搜索多个文件扩展名。
结论
Linux 的find命令是根据文件的年龄、类型和名称管理文件的强大工具。无论你是在清理磁盘空间、归档旧数据,还是监控过期文件,此命令都能让你完全掌控自己的目录。
今天就试试它,让你的 Linux 技能更上一层楼!