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

时间:2019-01-16 23:00:18

标签: unix tar

我在一次代码面试中失败了,但是我还是想理解它。

从根开始,我应该首先获取所有html文件,然后通过一个命令将它们压缩。

失败后,我可以自己这样做:

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

我的问题是,它模仿了系统的整个树形结构。我想要的解决方案是,如果要在具有以下条件的文件夹中运行,则将所有文件置于同一级别:

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

最终生成的tar最终有一个名为folder的文件夹,其中包含g.html。从根目录运行时,这看起来很糟糕

1 个答案:

答案 0 :(得分:2)

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 -transform

的示例