Извлекать rar файлы в одно и то же имя папки
У меня много .rar
папки в определенном каталоге. Я хочу извлечь содержимое каждого rar
папку в том же каталоге и все извлеченные файлы rar
папка должна быть помещена в новую папку с тем же именем, что и rar
имя папки.
Например, если есть два rar
файлы: one.rar
а также two.rar
затем скрипт должен создать две папки с одинаковыми именами: one
а также two
, Папка с именем one
должен содержать файлы, извлеченные из one.rar
и папка с именем two
должен содержать файлы, извлеченные из two.rar
,
Команда: unrar e $ filename извлекает все содержимое файла rar, но не создает папку назначения.
Если я использую unrar e $filename $DESTINATION_PATH
, так как может быть много rar
файлов, создание имени папки в пути назначения вручную займет много времени. Как я могу добиться этого с помощью сценария оболочки?
до сих пор я написал только эти строки:
loc="/home/Desktop/code"` # this directory path contains all the rar files to be extracted <br/>
for file in "$loc"/*
do
unrar e $file
done
Я не знаю, как создать то же имя папки, что и rar
назвать и извлечь все файлы этого rar
во вновь созданной папке с тем же именем.
Любая помощь будет оценена. Заранее спасибо!!
1 ответ
Ты можешь использовать sed
удалить расширение файла из ваших архивов. Посмотрите на следующий скрипт, который устанавливает destination
на соответствующее имя.
#!/bin/sh
for archive in "$(find $loc -name '*.rar')"; do
destination="$( echo $archive | sed -e 's/.rar//')"
if [ ! -d "$destination" ] ; then mkdir "$destination"; fi
unrar e "$archive" "$destination"
done
Если вы используете bash
, то вы можете просто использовать
#!/bin/bash
for archive in "$(find $loc -name '*.rar')"; do
destination="${archive%.rar}"
if [ ! -d "$destination" ] ; then mkdir "$destination"; fi
unrar e "$archive" "$destination"
done