使用 linux 解压目录中的所有 rar 文件

ema*_*ele 9 linux debian rar

我试图一次提取许多 rar 文件,但没有成功。我正在按顺序尝试:

>ls *.rar|xargs unrar x
>ls *.rar|xargs unrar e
>unrar e -r *.rar
>for f in *.rar;do unrar e “$f”;done
Run Code Online (Sandbox Code Playgroud)

没有人工作。Rar 每次都回答说没有要提取的文件。

>Extracting from damned_file.rar

 No files to extract
Run Code Online (Sandbox Code Playgroud)

如果我尝试一一提取文件,则一切正常

>unrar e damned_file.rar
 extracting damned_file.rar                        
 extracting dmaned_file.txt                            OK
 All OK
>
Run Code Online (Sandbox Code Playgroud)

我的 rar 版本是

UNRAR 4.10 freeware      Copyright (c) 1993-2012 Alexander Roshal
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

PS:命令

find . -name "*.rar" -exec unrar e {} \;
Run Code Online (Sandbox Code Playgroud)

工作正常,但问题保持不变。为什么前面的命令失败?

小智 11

这是我的 for 循环:

for file in *.rar; do unrar e "$file"; done
Run Code Online (Sandbox Code Playgroud)


mta*_*tak 1

xargs将参数放在提供给它的命令后面,直到达到当前 shell 的最大命令长度,因此该命令将是:

xargs unrar e damned_file.rar another_damned_file.rar yadf.rar
Run Code Online (Sandbox Code Playgroud)

但是,unrar只接受单个 rar 文件作为参数。您指定的 find 命令unrar针对它找到的每个文件运行,因此该命令是unrar e damned_file.rar, unrar e another_damned_file.rar