Создайте файл tar в подкаталоге каталога, который нужно заархивировать - PullRequest
0 голосов
/ 29 июня 2011

Я хотел бы создать tar-файл из всех файлов в каталоге, за исключением подкаталога в этом каталоге, и поместить этот tar-файл в один из подкаталогов. Например, у меня есть несколько TXT-файлов в / test, а также другой каталог в / test под названием ArchivedFiles. Я хотел бы сказать команде tar архивировать все файлы .txt и поместить ее в /test/ArchivedFiles.
Как мне это сделать?

Ответы [ 2 ]

1 голос
/ 29 июня 2011
tar cf test/foo/test.tar -- `find test  -maxdepth 1 -name '*.txt' -type f`

Я думаю, что следует делать то, что вы хотите.

Опция, которая не будет работать из-за возраста вашей команды tar:

find test -maxdepth 1 -type f -name '*.txt' -print0 | tar -cf test/foo/test.tar --null --files-from -

У вас проблемы, поэтому вы можете попробовать следующие команды:

tar cf test/foo/test.tar `find test  -maxdepth 1 -name '*.txt' -type f`
echo tar cf test/foo/test.tar `find test  -maxdepth 1 -name '*.txt' -type f`
tar c f test/foo/test.tar `find test  -maxdepth 1 -name '*.txt' -type f`
find test  -maxdepth 1 -name '*.txt' -type f

и вставить вывод, чтобы мы могли видеть, что происходит.

Учитывая, что поиск также очень унаследован, давайте попробуемследующее:

tar cf test/foo/test.tar test/*.txt
0 голосов
/ 29 июня 2011

Следующая команда будет работать.Он помещает любые подкаталоги в tar, но не помещает содержимое этих подкаталогов в tar.Это означает, что если вы поместите tar в subdir, вам не придется беспокоиться о том, что он поместит себя внутрь себя ...

Например, если вы хотите поместить все файлы, которые находятся втекущий каталог в tar-файле с именем mytar.tar, который находится в поддиректории с именем d1:

tar --no-recursion -cvf d1/mytar.tar *
...