是否可以按确切日期查找文件,然后对结果文件执行tar命令?

时间:2013-12-05 02:59:08

标签: linux bash scripting grep

我想按确切日期搜索文件,然后对结果文件执行tar命令。

示例:

-rw-rw-r--  1      0 Dec  4 08:07 file-1
-rw-rw-r--  1      0 Dec  4 08:07 file-2
-rw-rw-r--  1      0 Dec  5 08:07 file-3

我想只获取Dec 4日期的文件并将它们传递给tar命令。

档案应包含:

tar -ztvf dec4.tar.gz

输出:

-rw-rw-r--  1      0 Dec  4 08:07 file-1
-rw-rw-r--  1      0 Dec  4 08:07 file-2

这是我的脚本,它仍在复制那些Dec 5。

ls -ltr ./ | grep“12月4日”| tar -zcvf / home / backupfiles _ $(date'+%Y_%m_%d' - date ='1天前')。tar.gz

5 个答案:

答案 0 :(得分:1)

  ls -l ./ | grep "Dec 4" | tar -cvf archive.tar --null -T /dev/stdin

编辑:使用临时文件存储文件名:

ls -l | grep "Dec  4" | tr -s " " "#" | cut -d "#"  -f 9 >tempfile ; tar -T tempfile -cvf arch.tar ; rm -r tempfile 

答案 1 :(得分:1)

find . -type f -name "*" -newermt 2013-12-04 ! -newermt 2013-12-05 | xargs -I {} tar -czvf files.tar.gz {}

注意:这将仅tar文件而不是目录层次结构。您可以在find命令中指定所需的日期。

答案 2 :(得分:0)

stat -c"%z;%n" * | grep '^2012-12-04' | awk -F';' '{ print $2 }' | xargs tar -zcvf dec4.tar.gz

答案 3 :(得分:0)

所以你想要tar某个日期修改的文件?如果是这样,那就是一般问题“taring files modified between two dates”的特定实例。所以喜欢:

find /path/to/files/ \
   -newermt 20131204 -not -newermt 20131205 -type f -print0 \
   | cpio --create --null  --format=ustar \
   | gzip > /tmp/dec-4.tar.gz

它处理许多文件的情况,名称中包含空格的文件,并避免grep问题,包括名称中包含日期的文件。

答案 4 :(得分:0)

感谢overloop! :)这是我的剧本!

stat -c"%z;%n" * | grep '^2013-12-04' | grep "file-*" | awk -F';' '{ print $2 }' | xargs tar -zcvf pjpj.tar.gz