如何 tar 多个文件而不获取它们的路径

How to tar multiple files without getting their paths

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

从 root 开始,我应该首先获取所有 html 个文件,然后 tar 它们在一个命令中。

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

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

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

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

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

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

的例子