Найдите архив и извлеките его в каталог, где он находится

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

find -name any.tar ; tar xf any.tar find -name any.tar ; tar xf any.tar Я попытался с этим .. Я могу найти этот файл any.tar из любого каталога отдельно. И tar xf также извлекает файл редко, но только в any.tar где находится any.tar . Я хочу запустить обе команды в одной строке, которая может найти any.tar и извлечь ее, когда команда будет скомпилирована из домашнего каталога.

Я совершенно новичок в Unix, пожалуйста, помогите мне. Спасибо.

2 Solutions collect form web for “Найдите архив и извлеките его в каталог, где он находится”

Это может помочь

 find ./ -name '*.tar' -exec sh -c 'dir=$(dirname "$0"); tar -xvf "${0}" -C "${dir}"; done' {} \; 

Из страницы man tar

 -C, --directory DIR change to directory DIR 

Сначала найдете:

Чтобы найти все tar-файлы в каталоге, вам нужно find $directory -iname "*.tar" Примечание: -iname является расширением gnu, поэтому, если вы не используете gnu, вам нужно будет сделать -name *.tar -o -name *.TAR это почти эквивалентно.

Теперь добавим вашу рабочую команду tar:

find $directory -iname "*.tar" -print0 | xargs -0 --max-args=1 tar xf

Это извлечет все tar-файлы в текущий рабочий каталог.

  • Игнорировать Symlinks при извлечении Tarball
  • Извлечение нескольких файлов из tar на удаленный хост
  • Сценарий Bash для tar - Указание проблемы
  • Почему был написан шар, если смола уже существовала?
  • Можно ли перечислить все файлы в файле * .tar.gz без сканирования всего содержимого?
  • Как определить, будет ли запущенный tar вызвать диск для заполнения
  • Просмотр содержимого .tar
  • Резервное копирование размонтированного устройства в файл tar
  • Как разблокировать файл, пропуская начало структуры каталогов?
  • Инкрементальный сценарий резервного копирования (общий хостинг)
  • Как добавить огромный архив в архив и удалить его параллельно
  • Шифрование и сжатие
  • Linux и Unix - лучшая ОС в мире.