将 rar 文件提取到相同的文件夹名称

extract rar files to same folder name

我在特定目录中有很多 .rar 个文件夹。我想提取同一目录下每个rar文件夹的内容,并且rar文件夹的所有提取文件应放在与rar文件夹同名的新文件夹中名字.

例如,如果有两个 rar 文件:one.rartwo.rar,则脚本应创建两个同名文件夹:onetwo。名为 one 的文件夹应包含从 one.rar 中提取的文件,名为 two 的文件夹应包含从 two.rar.

中提取的文件

命令:unrar e $filename 提取 rar 文件的所有内容,但不创建目标文件夹。

如果我使用unrar e $filename $DESTINATION_PATH,那么由于可以有很多rar个文件,在目标路径中手动创建文件夹名称会花费很多时间。如何使用 shell 脚本实现此目的?

到目前为止我只写了这些行:

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 的所有文件。

如有任何帮助,我们将不胜感激。提前致谢!!

您可以使用 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