find /home/karl/dev/beer/ -printf "%P\n" | tar --exclude='./.git' -czf beer.tgz --no-recursion -C /home/karl/dev/beer/ -T -
Команда по-прежнему включает в себя каталог .git.
Вы можете попытаться исключить каталог в поиске следующим образом:
find /home/karl/dev/beer -path .git -prune -printf "%P\n" | tar -czf beer.tar.gz --no-recursion -T -
Вы также можете проверить это обсуждение.
из 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/**
Вы можете попытаться исключить каталог в поиске следующим образом:
find /home/karl/dev/beer -path .git -prune -printf "%P\n" | tar -czf beer.tar.gz --no-recursion -T -
Вы также можете проверить это обсуждение.
из 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/**