解压缩tar而不创建新目录,只将tar中的新文件合并到现有目录结构中

时间:2016-12-22 10:06:59

标签: linux tar

情况:

请注意,有一个 tar 文件,其结构如下:

  • DIR A.
    • 文件1
  • DIR B.
    • FILE 2
  • DIR C.
    • FILE 3

在我的磁盘上,有一个结构如下的目录:

  • DIR A.
    • 文件1
    • ... (更多文件和文件夹)
  • DIR B.
    • ... (文件和文件夹,但不是文件2)

问题:

有没有办法实现unpack命令不会创建新的diretories(=应该跳过/排除解压缩位置中不存在的目录),并且已经存在的文件不会被替换?< / p>

解压后磁盘结构应该是:

  • DIR A.
    • FILE 1 (不替换为tar)
    • ... (更多文件和文件夹)
  • DIR B.
    • FILE 2 (来自tar,因为之前没有)
    • ... (更多文件和文件夹,但不是文件3)

(请注意,不应创建DIR C)

更新

我已经发现'--skip-old-files'实现了在解包时不会替换旧的/现有文件。

1 个答案:

答案 0 :(得分:2)

for d in $(ls -d /home/bob/*/); do tar -x -k -f /tmp/test.tar  ${d}/* ; done

其中$(ls -d /home/bob/*/)仅列出目的地上的目录,-k保留现有文件