Исключить каталог с помощью tar [duplicate]

У этого вопроса уже есть ответ здесь: Как использовать tar для исключения всех файлов определенного каталога? 2 ответа
find /home/karl/dev/beer/ -printf "%P\n" | tar --exclude='./.git' -czf beer.tgz --no-recursion -C /home/karl/dev/beer/ -T -

Команда по-прежнему включает в себя каталог .git.

1
задан 22 April 2017 в 22:30

4 ответа

Вы можете попытаться исключить каталог в поиске следующим образом:

find /home/karl/dev/beer -path .git -prune -printf "%P\n" | tar -czf beer.tar.gz --no-recursion -T -

Вы также можете проверить это обсуждение.

0
ответ дан 18 July 2018 в 14:27

из man find:

-printf .... %P File's name with the name of the starting-point under which it was found removed.

Таким образом, вы исключаете каталог, который не существует в вашем выпуске. Если вы посмотрите на вывод своей команды find, прежде чем вы ее запустите (как правило, хорошая идея), вы увидите, что у нее нет ведущей ./. Таким образом, вы должны использовать --exclude='.git' не ./.git

. Вместо использования find для этого вы можете использовать globstar для рекурсивного воспроизведения:

shopt -s globstar tar --exclude='.git' -czvf beer.tar.gz /home/karl/dev/beer/**
0
ответ дан 18 July 2018 в 14:27

Вы можете попытаться исключить каталог в поиске следующим образом:

find /home/karl/dev/beer -path .git -prune -printf "%P\n" | tar -czf beer.tar.gz --no-recursion -T -

Вы также можете проверить это обсуждение.

0
ответ дан 24 July 2018 в 20:24
  • 1
    Файлы не добавлены сейчас :( – Karl Morrison 22 April 2017 в 21:48
  • 2
    Попробуйте удалить также команду printf в find. Я не уверен, что вам это нужно – Romeo Ninov 22 April 2017 в 21:49

из man find:

-printf .... %P File's name with the name of the starting-point under which it was found removed.

Таким образом, вы исключаете каталог, который не существует в вашем выпуске. Если вы посмотрите на вывод своей команды find, прежде чем вы ее запустите (как правило, хорошая идея), вы увидите, что у нее нет ведущей ./. Таким образом, вы должны использовать --exclude='.git' не ./.git

. Вместо использования find для этого вы можете использовать globstar для рекурсивного воспроизведения:

shopt -s globstar tar --exclude='.git' -czvf beer.tar.gz /home/karl/dev/beer/**
0
ответ дан 24 July 2018 в 20:24

Другие вопросы по тегам:

Похожие вопросы: