Bash 将文件夹和子文件夹中的所有rar文件解压缩到同一文件夹

Bash 将文件夹和子文件夹中的所有rar文件解压缩到同一文件夹,bash,find,unrar,Bash,Find,Unrar,我发现这篇文章是关于将rar文件从一个文件夹提取到同一文件夹名的: 我想将子文件夹中的几个rar文件提取到同名子文件夹中,即 /folder/sub-folder1/file1.rar-->/folder/sub-folder1/new-folder-same-name-as-sub-folder1/extracted_files.xyz /folder/sub-folder2/file2.rar-->/folder/sub-folder2/new-folder-same-name-as-sub

我发现这篇文章是关于将rar文件从一个文件夹提取到同一文件夹名的:

我想将子文件夹中的几个rar文件提取到同名子文件夹中,即

/folder/sub-folder1/file1.rar-->/folder/sub-folder1/new-folder-same-name-as-sub-folder1/extracted_files.xyz

/folder/sub-folder2/file2.rar-->/folder/sub-folder2/new-folder-same-name-as-sub-folder2/extracted_files.xyz

如何修改:

#!/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
要执行此操作,即运行/*rar文件夹中的所有rar文件?或者,使用类似的东西


谢谢

您可以使用
$loc
文件夹中的下一个管道,您希望文件名中的路径是:

find . -iname *.sh -type f -printf '%P\n' | xargs -i bash -c 'echo "$1" `dirname $1`/`echo "$1" | sed "s/\.sh$//1" | tr "/" "-"`' -- {}

如您所见,
$(dirname$archive)
将返回一个目录路径,管道
sed“s/\.sh$//1”| tr”/“-”
可以返回一个
文件名
,格式符合您的要求。

如果我能很好地理解这个问题,您可以尝试
mkdir-p$destination
。如果您想要
sub-folder2/sub-folder2/
谢谢,听起来不错-今天可以试一试