Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在unix中压缩最新创建的文件_Unix_Zip - Fatal编程技术网

如何在unix中压缩最新创建的文件

如何在unix中压缩最新创建的文件,unix,zip,Unix,Zip,我想压缩在特定日期创建的文件数。我使用了这个命令 zip -rt 06222012 TEST root/*.csv 此命令压缩根目录中的所有文件,扩展名为.csv,创建日期>=22/6/2012 但这不符合我的要求。我的要求是。。 假设有两个脚本a.sh和b.sh a、 sh(手动运行)在2012年6月22日凌晨1:00执行,在2012年6月22日凌晨4:00完成,并创建4.csv文件 此b.sh文件于2012年6月22日上午6:00通过cron作业执行,并于2012年6月22日上午10:00

我想压缩在特定日期创建的文件数。我使用了这个命令

zip -rt 06222012 TEST root/*.csv
此命令压缩根目录中的所有文件,扩展名为.csv,创建日期>=22/6/2012

但这不符合我的要求。我的要求是。。 假设有两个脚本a.sh和b.sh a、 sh(手动运行)在2012年6月22日凌晨1:00执行,在2012年6月22日凌晨4:00完成,并创建4.csv文件

此b.sh文件于2012年6月22日上午6:00通过cron作业执行,并于2012年6月22日上午10:00完成,并创建5.csv文件

上面的zip命令将压缩所有这9个文件,因为它们是在2012年6月22日当天创建的,但我只需要5个.csv文件,这些文件仅由b.sh创建,这意味着这些文件是在2012年6月22日上午10:00创建的


在上面的zip命令中,我也可以给出小时和分钟吗?

鉴于上述评论中已经提到的事实,使用标准文件系统,您唯一的机会是近似于“上次修改的文件”创建的“文件”,您可能希望使用
查找
来解决此问题

关于stackoverflow已经有一篇很好的文章(请参阅:)

就您的情况而言,
-newerXY
选项可能是最适合以下问题的选项:

  zip -r TEST `find root -name"*.csv" -newermt 10:00`

根据创建它们的脚本,为
*.csv
指定一个更明确的名称如何?如果对
a.sh
执行
*4.csv
,则可以
zip-rt 062222012测试根目录/*4.csv
。请注意,
-t
选项处理的是修改时间,而不是创建时间。在POSIX中,不会记录文件的创建时间。谢谢大家。实际上,这些文件是由一个sql过程创建的,该过程由两个脚本a.sh和b.sh调用,一个是手动调用的rum,另一个是通过cron job调用的。文件名包含年、月和某些特定名称。这些内容是在sql过程中动态生成的。我错过了上面的一个测试用例。我认为通过这段代码我将无法压缩正确的文件,因为假设手动脚本(a.sh)在2012年4月26日上午4点到2012年4月26日上午10点创建4个文件,1个文件在4:30创建,另一个文件在6:30创建,另一个文件在8:00创建,最后一个文件在10:00现在,当cron作业(b.sh)在2012年4月26日上午6点到2012年4月26日下午2点执行时,1个文件在6:30创建,上午9点还有一次,以此类推。因此,如果您看到我压缩了这段代码,我最终将压缩通过a.sh创建的一些文件,我不需要这些文件。我现在只看到这个选项,即当sql过程运行并创建文件时,我将这些名称写入某个临时文件,然后通过unix读取该文件并仅压缩这些特定文件。如果您看到任何其他选项,在不更改.sql文件的情况下,这也可以通过unix脚本实现,请告诉我如果我正确理解您的问题,那么您感兴趣的只是通过运行b.sh生成的文件。如果是这种情况,而不是试图找出哪些文件是由b.sh创建的,那么在b.sh中创建后直接对其进行压缩可能是一个更好的主意。如果直接从b.sh脚本压缩,则无需通过某种神秘的魔法尝试找出哪个脚本创建了文件,因为信息直接存在。作为一种替代方法,您可以尝试使用不同的名称标记文件-例如,
xxx.a.csv``和
xxx.b.csv`,如果这不会破坏任何内容。是的,我就是这么做的,但我必须在生成这些文件的.sql文件中进行标记,而不是在b.sh中进行标记。sql我将所需文件的名称临时存储在一个特定的临时文件中。然后从b.sh中,我读取了临时文件并压缩了相应的文件。成功了:)