Как записать в архив несколько файлов, не получая их пути - PullRequest
0 голосов
/ 17 января 2019

Я был на собеседовании по коду, но потерпел неудачу, но все равно пытаюсь это понять.

Из корня я должен был сначала получить все html-файлы и скопировать их с помощью одной команды.

После того, как я потерпел неудачу, я смог сделать это самостоятельно так:

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

Моя проблема в том, что она имитирует всю древовидную структуру системы. Я хотел решение, которое поместило бы все файлы на один уровень, если бы я запускал папку с

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

Мой полученный tar содержит папку с именем folder с g.html. При запуске из-под рута это выглядит ужасно

1 Ответ

0 голосов
/ 17 января 2019
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 Примеры с - преобразование

...