Извлекать 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
Другие вопросы по тегам