Распаковать в папку с тем же именем [дубликат]

Самый простой способ сделать это - просто перестать использовать репозиторий remi-test в качестве источника и удалить, или, если вы хотите быть более безопасным - отключить его, отредактировав /etc/yum. repos.d/remi-test.repo и изменив enabled=1 на enabled=0

Вы все еще можете заставить yum использовать репозиторий через командную строку, но он больше не будет использоваться для общих обновлений. Со временем пакеты будут заменены пакетами из remi.

8
10.03.2019, 15:55
3 ответа

Я использую для этого unar; по умолчанию, если архив содержит более одного файла или каталога верхнего -уровня, он создает каталог для хранения извлеченного содержимого, названный в честь архива так, как вы описываете:

unar foo.zip

Вы можете принудительно создать каталог во всех случаях с опцией -d:

unar -d foo.zip

Кроме того, функция может сделать это с помощьюunzip:

unzd() {
    if [[ $# != 1 ]]; then echo I need a single argument, the name of the archive to extract; return 1; fi
    target="${1%.zip}"
    unzip "$1" -d "${target##*/}"
}

target=${1%.zip}
Строка

удаляет расширение .zip, не принимая во внимание ничего другого (, поэтому foo.zipстановится foo, а ~/foo.zipстановится~/foo).

${target##*/}

расширение параметра удаляет все до последнего /, поэтому ~/fooстановится foo. Это означает, что функция извлекает любой файл .zipв каталог с его именем в текущем каталоге. Используйте unzip $1 -d "${target}", если вы хотите вместо этого распаковать архив в каталог рядом с ним.

26
27.01.2020, 20:10

Используйте unzip -d exdir zipfile.zip для извлечения zip-файла в определенный каталог. В принципе, прочитав ваш пост буквально, вы могли бы написать такую ​​​​функцию:

unzip_d () {
    unzip -d "$1" "$1"
}

Поскольку вы хотите удалить расширение .zip , вы можете использовать для этого специальный синтаксис переменных:

unzip_d () {
    zipfile="$1"
    zipdir=${1%.zip}
    unzip -d "$zipdir" "$zipfile"
}
17
27.01.2020, 20:10

Еще один вариант сделать это с вкладышем 1 -для нескольких zip-файлов в текущем каталоге:

for f in *.zip; do unzip "$f" -d "${f%.zip}"; done

Только для одного файла (, т.е. для использования псевдонима )будет:

unzip "$1" -d "${1%.zip}"
5
27.01.2021, 18:11

Теги

Похожие вопросы