См. Здесь: https://github.com/core-process/linux-unattended-installation/
Этот проект предоставляет все необходимое для создания автоматической установки минимальной установки Linux, в то время как минимальная означает наиболее легкую установку, включая службу OpenSSH и Python, которую вы можете получить из стандартного установщика дистрибутива Linux. Идея заключается в том, что вы будете выполнять все дальнейшее развертывание своих конфигураций и служб с помощью Ansible или аналогичных инструментов после завершения минимальной настройки.
попробуйте
find . -type f -name "*.tar.gz" -execdir tar -xvzf {} \;
в соответствии с команда man find
-execdir;
команда -execdir {} +
Like - exec, но указанная команда запускается из подкаталога, содержащего соответствующий файл, который обычно не является каталогом в , который вы начали поиск.
Вот один из способов (предполагается, что вы используете bash):
$ shopt -s globstar
$ for tar in /Landsat_Data/**/*.tar.gz; do
tar xvzf "$tar" --one-top-level="$(dirname "$tar")"/"$(basename "$tar" .tar.gz)"
done
Опция globstar
заставляет **
рекурсивно сопоставлять 0 или более файлов и каталогов, поэтому /Landsat_Data/**/*. tar.gz
будет соответствовать всем *tar.gz
файлам в любом подкаталоге /Landsat_Data/
. Команда dirname
печатает имя каталога на входе, а basename
- только имя с расширением, которое вы ему задали (здесь tar.gz
удалено. Так, например:
$ dirname /Landsat_Data/Site2/LE70930862008092-SC20160107074735.tar.gz
/Landsat_Data/Site2
$ basename /Landsat_Data/Site2/LE70930862008092-SC20160107074735.tar.gz .tar.gz
LE70930862008092-SC20160107074735
О --one-top-level
рассказано в man tar
:
--one-top-level[=DIR]
Extract all files into DIR, or, if used without argument, into a
subdirectory named by the base name of the archive (minus stan‐
dard compression suffixes recognizable by --auto-compress).
Взятые вместе, они сделают то, что вы хотите.
Если ваш tar
не имеет этой опции, вы можете сделать это вручную:
$ shopt -s globstar
$ for tar in /Landsat_Data/**/*.tar.gz; do
newdir="$(dirname "$tar")"/"$(basename "$tar" .tar.gz)"
mkdir "$newdir"
tar xvzf "$tar" -C "$newdir"
done