Linux 错误退出因上一个错误而延迟

Linux 错误退出因上一个错误而延迟,linux,shell,gzip,tar,Linux,Shell,Gzip,Tar,我试图在一个目录中找到文件,然后gzip,然后tar 剧本: find /home -type f -name "*.log" -newer /home/path/start_date \ ! -newer /home/path/end_date | xargs -0 tar -cvzf files.tar.gz tar仍在创建中,但我遇到了一些错误: tar:/home/path/filename.log\n Cannot stat : No such file or directo

我试图在一个目录中找到文件,然后gzip,然后tar

剧本:

find /home -type f -name "*.log" -newer /home/path/start_date \
    ! -newer /home/path/end_date | xargs -0 tar -cvzf files.tar.gz
tar仍在创建中,但我遇到了一些错误:

tar:/home/path/filename.log\n Cannot stat : No such file or directory
tar:Error exit delayed from previous errors.

有人能解释一下这些错误是什么吗?谢谢。

你忘了
-print0

-打印0

是的;在标准输出上打印完整文件名,后跟 空字符(而不是-print使用的换行符)。 这允许文件名包含换行符或其他类型的白色字符 由处理 查找输出。此选项对应于xargs的-0选项

同时引用感叹号以防止历史扩展,以防万一:

find /home -type f -name "*.log" -newer /home/path/start_date \! -newer /home/path/end_date -print0 | xargs -0 tar -cvzf files.tar.gz
它不是POSIX,但如果可以使用
-not
,请使用
-not

... -not -newer ...

如果使用
xargs-0
,则需要使用
find-print0
…find/home-type f-name“*.log”-更新的/home/path/start\u-date-更新的/home/path/end_date-print0 | xargs-0 tar-cvzf files.tar.gz。。。。你是说像这样吗?我试过了,我得到了这个:tar:从成员名称中删除前导“/”。还有一件事,当我尝试解压tar时,它会再次创建父目录和子目录,然后提取。例如:它创建home/path/template/log1.log(home..path..template目录会在我的模板目录中再次创建)。@Kshitiz Tar默认情况下会将其剥离,这是正常的,但您可以使用
-P
-绝对名称
不要从文件名中剥离前导“/”).@Kshitiz您希望如何存储您的文件?你想不包括目录吗?konsole,我看到了帖子,但我不知道把-p放在哪里。很抱歉,我还在学习shell脚本。