Linux find 命令:按时间范围查找、移动与归档文件
在 Linux 系统管理中,经常需要根据文件的修改时间进行筛选、移动和归档。本文将介绍如何使用 find 命令实现这些操作。
1. 移动当前目录下的所有文件(不包括目录)
将当前目录下的所有普通文件(不包括子目录本身)移动到 /opt/shell 目录:
find . -type f -exec mv {} /opt/shell ;
或者使用 xargs 命令:
find . -type f | xargs -I '{}' mv {} /opt/shell
注意:如果文件数量巨大,使用 xargs 通常效率更高,但 -exec 方式更安全,可避免因文件名包含特殊字符(如空格、换行)导致的问题。
2. 按时间范围查找文件
首先,我们可以查看目录下的文件总数:
find . -type f | wc -l
# 或
ls -l | grep "^-" | wc -l
要查找并统计 120 天前修改过的文件数量:
find . -mtime +120 | wc -l
时间参数说明:
-mtime +n:查找 n * 24 小时以前修改的文件。-mtime -n:查找 n * 24 小时以内修改的文件。-mtime n:查找正好 n * 24 小时前修改的文件。
3. 按时间移动文件到指定目录
将 90 天前修改的文件移动到 /var/tmp/date_90 目录:
find . -mtime +90 -exec mv {} /var/tmp/date_90 ;
操作建议:
- 移动前建议先确认文件数量,避免误操作。
- 对于大量文件(例如超过 20 万个小文件),建议分批操作,以免系统负载过高。
4. 检查目录大小并打包压缩
移动完成后,检查目标目录的大小:
du -sh /var/tmp/date_90
通常建议单个归档包的大小控制在 10-15 GB 左右,便于传输和存储。
最后,使用 tar 命令打包并压缩:
tar -zcvf date_90.tar.gz /var/tmp/date_90/
命令参数说明:
-z:使用 gzip 压缩。-c:创建归档文件。-v:显示详细过程(可选)。-f:指定归档文件名。
完成以上步骤后,您就成功地按时间筛选了文件,并将其移动、打包归档,便于后续管理或备份。