Tarring серия файлов / каталогов без "."в качестве родительского каталога? - PullRequest
0 голосов
/ 21 февраля 2019

Я создаю файл .tar.gz с помощью следующей команды.

tar cfhpz archive.tar.gz -C /lots/of/subdirectories/files .

/ lots / of / subdirectories / files содержит структуру каталогов, похожую на:

+
|-- bin/
|-- dist/
|-- lib/

И т. Д.

Моя конечная цель от запуска этой команды - создать .tar.gz, который будет иметь структуру каталогов, точно такую ​​же, как в каталоге / lots / of / subdirectories / files, - без дополнительныхродительские каталоги.

Используя указанную мной команду, все выглядит так, что структурируется именно так, как я хочу, когда я просматриваю архив с помощью Ark или Archive Mounter.Однако когда я просматриваю архив с помощью диспетчера архивов GNOME, он показывает, что все файлы / папки фактически находятся в подкаталоге с именем «.»вот так:

+
|-- .
    |-- bin/
    |-- dist/
    |-- lib/

Можно ли как-нибудь избавиться от "."подкаталог?

1 Ответ

0 голосов
/ 22 февраля 2019

В вашей команде вы называете каталог ., который связан с каталогом, в котором вы находитесь. Каталог . является реальным каталогом, просто случается так, что он имеет ту же последовательность, что и каталог, ., self, is in. Например, когда вы запускаете скрипт с ./script.sh, то, что вы делаете, происходит так же, как если бы из другой позиции в файловой системе вы дали команду /path/to/script.sh.В Bash принято использовать ./, когда вы запускаете исполняемый файл из локального каталога.В качестве альтернативы вы можете запустить скрипт bash script.sh

Итак, когда вы запускаете

tar cfhpz archive.tar.gz -C /lots/of/subdirectories/files .

, он разрешается до ./all-the-stuff-in-the-directory.Вам нужно взять все файлы в каталоге, а не рассматривать их как подкаталог ./.Для этого вы хотите использовать подстановочный знак или регулярное выражение, чартер *, который соответствует всему.

tar cfhpz archive.tar.gz -C /lots/of/subdirectories/files *

Например, если я запускаю echo ~/Documents/*

/home/seamus/Documents/2013 /home/seamus/Documents/2014 /home/seamus/Documents/2015 /home/seamus/Documents/2016 /home/seamus/Documents/2017 /home/seamus/Documents/2018 /home/seamus/Documents/2019

То, что мы получаем в ответ, - это все содержимое каталога, а не ./, ../ или других скрытых файлов.

Разница с KDE Ark и Gnome file Archive Manager заключается в том, чтоАрк делает вывод, что ./, вероятно, просто перенаправление в папку содержит.Это отличается от формы Grome, которая, вероятно, выполняет что-то похожее на ls в файловой структуре, где фактически позволяет вам пройтись по структуре файла.

...