Существует шаблон, который позволяет, Вы для использования snmp для контроля использования proc кактусы можете передать его по каналу как график..
с помощью gnu tar
можно использовать --xform
(или --transform
) для префиксации /prefix/
к имени каждого файла:
tar -xf myArchive.tar.gz --xform='s|^|myArchive/|S'
обратите внимание, что в префиксе /
нет ведущей /
, а выражение sed
заканчивается на S
, чтобы исключить символические цели связи из преобразования имени файла.
Чтобы проверить его (dry-run):
tar -tf myArchive.tar.gz --xform='s|^|myArchive/|S' --verbose --show-transformed-names
Чтобы начать, вот очень простой сценарий, который можно вызвать как извлечь
:
STRIP=${1%.*} #strip last suffix NAME=${STRIP%.tar} #strip .tar suffix, if present tar -xf "$1" --xform="s|^|$NAME/|S" #run command
Еще одно возможное решение использует - Опция
- Опция
:
tar -xzf ARCHIVE_NAME.tgz --transform="s/OLD_DIR_NAME/ARCHIVE_NAME/"
с вашими файлами:
tar -xzf myArchive123.tar.gz --transform="s/helloWorld/myArchive123/"
Редактировать
Принятый ответ ниже, чем ниже. (Делайте то же самое, но короче обычно лучше).
Я в конечном итоге взломал себя скриптом для задачи под рукой. Это работает с .tar .tar.gz и .gz
#!/bin/sh
#usage:
# nameOfScript myArchive.tar.gz
# nameOfScript myArchive.gz
# nameOfScript myArchive.tar
#
# Result:
# myArchive //folder
fileName="${1%.*}" #extracted filename
#handle the case of archive.tar.gz
trailingExtension="${fileName##*.}"
if [ "$trailingExtension" == "tar" ]
then
fileName="${fileName%.*}" #remove trailing tar.
fi
mkdir "$fileName"
tar -xf "$1" --strip-components=0 -C "$fileName"
Использование:
nameOfScript archive.tar.gz
ls
archive
cd archive
ls
<archive content>
Примечание. Это решение способно к точкам в имени файла. E.G ECLIPSE-4.5M-SDK.TAR.GZ.
Я держу сценарий в моем Git Repo. Для последней версии см.: https://github.com/leoufimtsev/ldts/blob/master/Pathscripts/leo-Tar-hothhere
Ну, ты можешь сделать это хотя бы за пару шагов. Если бы вы сделали
mkdir <archive name>
tar -xf <archive name>.tar.gz --strip-components=1 -C <archive name>
, то задача была бы решена, хотя, возможно, еще есть более компактный ответ.
$ tar -xf myArchive123.tar.gz --one-top-level
--один -верхний -уровень [=DIR]
Извлеките все файлы в DIR или, если используется без аргумента, в подкаталог, названный по базовому имени архива (за вычетом стандартных суффиксов сжатия, распознаваемых с помощью --auto -сжатие ).