博客 / Others/ Linux find 命令实战:按时间查找、移动与打包文件

Linux find 命令实战:按时间查找、移动与打包文件

Linux find 命令实战:按时间查找、移动与打包文件

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:指定归档文件名。

完成以上步骤后,您就成功地按时间筛选了文件,并将其移动、打包归档,便于后续管理或备份。

发表评论

您的邮箱不会公开。必填项已用 * 标注。