一度に多くの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 {} \;
正常に動作しますが、質問は同じままです。前のコマンドが失敗するのはなぜですか?
これが私の頼りになるforループです:
for file in *.rar; do unrar e "$file"; done
xargs
は、提供されたコマンドの背後に、現在のシェルの最大コマンド長まで引数を配置するため、コマンドは次のようになります。
xargs unrar e damned_file.rar another_damned_file.rar yadf.rar
ただし、unrar
は引数として単一のrarファイルのみを取ります。指定したfindコマンドは、見つかったすべてのファイルに対してunrar
を実行するため、コマンドはunrar e damned_file.rar
、unrar e another_damned_file.rar
。