Как мне распаковать каталог файлов и папок, не включая сам каталог? - PullRequest
343 голосов
/ 02 июня 2009

Я обычно делаю:

tar -czvf my_directory.tar.gz my_directory

Что если я просто хочу включить все (включая любые скрытые системные файлы) в my_directory, но не сам каталог? Я не хочу:

my_directory
   --- my_file
   --- my_file
   --- my_file

Я хочу:

my_file
my_file
my_file

Ответы [ 15 ]

0 голосов
/ 16 мая 2017

Самый простой способ, который я нашел:

cd my_dir && tar -czvf ../my_dir.tar.gz *

0 голосов
/ 23 августа 2016
# tar all files within and deeper in a given directory
# with no prefixes ( neither <directory>/ nor ./ )
# parameters: <source directory> <target archive file>
function tar_all_in_dir {
    { cd "$1" && find -type f -print0; } \
    | cut --zero-terminated --characters=3- \
    | tar --create --file="$2" --directory="$1" --null --files-from=-
}

Безопасно обрабатывает имена файлов с пробелами или другими необычными символами. При желании вы можете добавить -name '*.sql' или аналогичный фильтр к команде поиска, чтобы ограничить количество включаемых файлов.

0 голосов
/ 14 февраля 2013
 tar -cvzf  tarlearn.tar.gz --remove-files mytemp/*

Если папка mytemp, то, если вы примените вышеуказанное, она заархивирует и удалит все файлы в папке, но оставит ее в покое

 tar -cvzf  tarlearn.tar.gz --remove-files --exclude='*12_2008*' --no-recursion mytemp/*

Вы можете указать шаблоны исключения, а также указать, что не следует просматривать вложенные папки.

0 голосов
/ 07 января 2013

Использовать pax.

Pax - устаревший пакет, но он отлично и просто выполняет свою работу.

pax -w > mydir.tar mydir
0 голосов
/ 02 июня 2009
tar -C my_dir -zcvf my_dir.tar.gz `ls my_dir`
...