linux 按日期制作tar文件

3df52oht  于 2023-08-03  发布在  Linux
关注(0)|答案(1)|浏览(123)

嗨,我有一个简单的问题,但没有找到为什么它的happenig,
我只想用昨天下载的文件做一个tar。我使用 find 来获取所有文件名,但是当我尝试使用 tarfind 来生成tar时,它会生成一个包含目录中所有项目的tar文件。让我给予个例子:
当我运行find -mtime 0时,它会给我一些昨天下载的文件

./linuxmint-19-xfce-32bit.iso
./utserver.tar.gz
./nf_9866.pdf
./-@ut c4d 22.torrent

字符串
但是当我使用find -mtime 0 | xargs tar -zcvf teste.tar.gz -T -时,它会生成所有文件的tar

./Modelo_KCS_-_Devolucao_de_Compra2.doc
./Modelo_KCS_-_Devolucao_de_Compra2(2).doc
./Pref.25-04-20231-3.pdf
./Centro_Diag.14-04-20231.pdf
./OC 2290.pdf
./Configuracao_Cliente.docx
./Twine.html
./empresa.ods
./file22.xlsx
[...]


我做错了什么?
我尝试了不同的方法来获取文件的日期一样`

find  -newermt 2023-06-30 ! -newermt 2023-07-01 | xargs tar -cvzf teste.tar.gz
find /home/user/Downloads/ -type f -newermt 2023-06-29 ! -newermt 2023-06-30 | tar -czvf teste.tar.gz`


但两种方法都不管用

vltsax25

vltsax251#

tar已经从 stdin 读取文件名时,不需要xargs。这应该可以创建一个tarball,其中包含您昨天下载的内容:

find . -type f -mtime 1 | tar czvf test.tar.gz -T -

字符串
如果您仍然遇到问题,很可能是查找结果不正确。如果您尝试相同的操作,但使用文件名通配符,会发生什么:

find . -name '*.docx' | tar czvf alldocs.tar.gz -T -


您也可以通过两个步骤来验证您的列表:

find . -mtime 1 > /tmp/list.txt
tar czvf test.tar.gz -T /tmp/list.txt


如果您的tarball中有任何内容不在/tmp/list.txt中,则使用列表的内容作为参数:

cat /tmp/list.txt|xargs tar czvf test.tar.gz

相关问题