web-dev-qa-db-ja.com

Linuxのディレクトリ内のすべてのrarファイルをunrarします

一度に多くのrarファイルを抽出しようとしていますが、成功しません。私は次の順序で試しています:

>ls *.rar|xargs unrar x
>ls *.rar|xargs unrar e
>unrar e -r *.rar
>for f in *.rar;do unrar e “$f”;done

誰も機能しません。 Rarは、抽出するファイルがないと毎回答えます。

>Extracting from damned_file.rar

 No files to extract

ファイルを1つずつ抽出しようとすると、すべて正常に機能します

>unrar e damned_file.rar
 extracting damned_file.rar                        
 extracting dmaned_file.txt                            OK
 All OK
>

私のバージョンのrarは

UNRAR 4.10 freeware      Copyright (c) 1993-2012 Alexander Roshal

私が間違っていることは何ですか?

PS:コマンド

find . -name "*.rar" -exec unrar e {} \;

正常に動作しますが、質問は同じままです。前のコマンドが失敗するのはなぜですか?

3
emanuele

これが私の頼りになるforループです:

for file in *.rar; do unrar e "$file"; done
4
blackappy

xargsは、提供されたコマンドの背後に、現在のシェルの最大コマンド長まで引数を配置するため、コマンドは次のようになります。

xargs unrar e damned_file.rar another_damned_file.rar yadf.rar

ただし、unrarは引数として単一のrarファイルのみを取ります。指定したfindコマンドは、見つかったすべてのファイルに対してunrarを実行するため、コマンドはunrar e damned_file.rarunrar e another_damned_file.rar

1
mtak