代码之家  ›  专栏  ›  技术社区  ›  iagowp

如何在不获取路径的情况下对多个文件进行tar

  •  -1
  • iagowp  · 技术社区  · 6 年前

    我在一次代码面试中失败了,但无论如何我都在努力理解它。

    从根目录开始,我应该先获取所有HTML文件,然后用一个命令对它们进行tar。

    在我失败之后,我可以像这样独自完成:

    find . -name "*.js" | xargs tar -cvf tar.tar
    

    我的问题是,它模仿了整个系统的树结构。我想要一个解决方案,如果我在一个文件夹中运行

    -
     |  a.js
     |  b.html
     |  c.js
     |_ folder
       | g.html
    

    我得到的tar最终得到一个名为 folder 其中包含g.html。当从树根上奔跑时,这看起来很可怕

    1 回复  |  直到 6 年前
        1
  •  2
  •   Romeo Ninov    6 年前
    root@i5-cpu:~/work_area/php# tree d1
    
        d1
        ├── d2
        │   ├── f2_1.js
        │   └── f2_2.js
        ├── f1_1.js
        └── f1_2.js
    
    1 directory, 4 files
    
    root@i5-cpu:~/work_area/php# find . -name "\*.js" | xargs tar -cvf tar.tar --transform='s,.*/,,'
    
    ./d1/d2/f2_1.js
    ./d1/d2/f2_2.js
    ./d1/f1_1.js
    ./d1/f1_2.js
    
    root@i5-cpu:~/work_area/php# tar -tvf tar.tar
    
    -rw-rw-rw- root/root         0 2019-01-17 01:12 f2_1.js
    -rw-rw-rw- root/root         0 2019-01-17 01:12 f2_2.js
    -rw-rw-rw- root/root         0 2019-01-17 01:11 f1_1.js
    -rw-rw-rw- root/root         0 2019-01-17 01:11 f1_2.js
    

    检查此页 https://www.gnu.org/software/tar/manual/html_section/tar_51.html 示例 ——变换