我想按确切日期搜索文件,然后对结果文件执行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
答案 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