Я знаю, как заархивировать кучу файлов, за исключением нескольких, которые мне не нужны:
tar --exclude=./*.jpg -pcjvf all.tar.gz ./
Здесь я архивирую все файлы, кроме файлов с расширением jpg.
Я хочу сделать наоборот. Мне нужно только tar-архивировать определенные файлы. После гугления мне не удалось найти примеры.
Существует ли опция --include в команде tar?
решение1
Нет --include
возможности, так как вы можете просто прикрепить все файлы, которые вы хотите включить в качестве параметров, к tar
. Если вы хотите включить через подстановочный знак, используйте find
:
tar -pcjvf specific.tar.gz $(find -name *.jpg)
решение2
Я что-то упустил? Почему бы просто не сделать:
tar -pcjvf pictures.tar.gz ./*.jpg
решение3
Что-то вроде этого:
tar -pcjvf images.tar.gz ./*.jpg ./*.jpeg ./*.png
решение4
Я бы сделал это, передав вывод 'find' в tar:
find /your/directory -type f -name '*.jpg' | tar --files-from=- -cvf meow.tar
Команда «find» выводит все файлы JPG, хранящиеся в каталоге /your/directory.рекурсивно, а магическая опция tar --files-from будет читать файлы из '-', обозначающего stdin, и tar-файлы. Я нахожу это особенно полезным, потому что у rsync также есть опция --files-from, поэтому мне нужно запомнить только одну команду для указания файла. Более того, 'find' более мощен, чем возможности tar или rsync по указанию файла.