私は多くのRARファイルを含む再帰的なディレクトリ構造を持っています。私はunrar
含まれているすべてのファイルを現在の作業ディレクトリに抽出するためにこのコマンドを使用してきました。
unrar e -r -o- *.rar
大丈夫です。ただし、一部のRARファイルには、上記のコマンドで抽出された他のRARファイルが含まれています。問題は、抽出されたRARが初期検索の一部ではないため、抽出されたRARファイルの内容が抽出されないことです。
この問題をどうすればよいですか? RARファイルの最初の部分を削除して新しく検索したくありません。私はBashに精通していませんが(またはおそらく#!/bin/sh -xu
これはスクリプトのshebangかもしれません)、最初から検索したファイル名を保存して2番目のコマンドから除外したいと思います。 (最大深さはRAR内のRARです。)よりエレガントなソリューションはありますか?
よろしくお願いします、ビクター様。
編集する:
@icarusが提案したソリューションを試してください。
mkdir unrar
cd unrar
unrar e -r -o- ../*.rar
set -- *.rar
[ -e "$1" ] && unrar e -r -o- *.rar
答え1
rarアーカイブを検索するには、シェル(または検索)を使用します。最初のグループを新しいディレクトリに抽出し、そのディレクトリ内のすべてのグループを解凍します。
#!/bin/bash
shopt -s nullglob globstar
mkdir unrar
cd unrar
for i in ../**/*.rar ; do unrar e -o- "$i" ; done
for i in **/*.rar ; do unrar e -o- "$i" ; done