我想知道一个可以用来一次抓取和归档一年内所有文件的命令。我正在处理一个包含 72000 个文件的目录,其中文件的日期从 2007 年至今。我希望通过对一年组中的旧文件进行 tar-bzip 来使其更易于管理。因此,所有文件从 1-1-2007 到 12-31-2007 等。感谢您的帮助!
答案1
cd /path/to/directory
find -type f -newermt 2007-01-01 ! -newermt 2008-01-01
请注意,这会选择您所在时区 2007 年创建的文件,并且时间戳恰好在年份更改午夜时的文件与前一年分组。
find
如果您的 CentOS 版本有不支持的旧版本-newermt
,您可以改用-newer
fencepost 文件。
touch -d 2007-01-01 /tmp/2007-01-01
touch -d 2008-01-01 /tmp/2008-01-01
find -type f -newer /tmp/2007-01-01 ! -newer /tmp/2008-01-01
假设文件名不包含换行符,您可以将结果列表作为输入tar
使用-T
选项(-T -
表示从标准输入读取文件名)。
cd /path/to/directory
find -type f -newermt 2007-01-01 ! -newermt 2008-01-01 |
tar -cjf /elsewhere/2007.tar.bz2 -T -
(tar -cJf /elsewhere/2007.tar.xz
相反,xz 解压缩速度更快,压缩效果更好,但代价是压缩时需要更多内存。)