如何 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
的例子
我参加了一次代码面试,但失败了,但无论如何我都在努力理解它。
从 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
的例子