【问题标题】:Tar and --newer / --after-date parameter焦油和 --newer / --after-date 参数
【发布时间】:2013-08-08 01:46:24
【问题描述】:

我的项目结构如下:

-sprint41
 -file1
 -file2
-sprint40
 -file1
 -file2
  • 我在 sprint41 文件夹中的所有文件(+ sprint41)的修改日期为 20130807
  • 我在 sprint40 文件夹中的所有文件(+ sprint40)都有修改日期 20130610

我想创建一个包含 20130715 之后的所有文件(+文件夹)的存档。 我的命令如下:

tar -cf test.tar --after-date 20130715 *

在这个命令之后,test.tar 包含以下内容:

-sprint41
 -file1
 -file2
-sprint40

即使修改日期早于 20130715,它仍保留 sprint40 文件夹

我希望拥有以下内容:

-sprint41
 -file1
 -file2

你有线索吗?

非常感谢

【问题讨论】:

    标签: windows shell tar


    【解决方案1】:

    是的,问题是即使目录是空的,tar 仍然会包含目录。它只是真正检查文件的 --newer 选项,而不是目录。将不得不编写一个小脚本或将 find 与 -cnewer 一起使用并将输出通过管道传输到 tar(在 tar 命令上使用 --no-recursion)。

    使用您想要的时间戳创建一个文件

     touch -t 201307150000 timefile.txt
    

    然后是这样的:

    find . -cnewer timefile.txt -print0 | xargs -0 tar --no-recursion -cf test.tar
    

    【讨论】:

    • 听起来不错,但我忘了提到我在 windows 下运行 tar 命令。在 Windows 下查找非常有限。不知道我能不能找到这样的日期
    • 啊,这改变了一切。是否安装了 PowerShell?不完全确定那里的语法,但我知道它扩展了相当多的功能。
    • 我最终使用带有日期参数的 Xcopy,然后 tar 目录,无论如何,谢谢,+1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 2013-02-13
    • 1970-01-01
    • 2014-01-07
    • 2011-10-14
    • 1970-01-01
    相关资源
    最近更新 更多