ループを入力せずにサブディレクトリ内のすべてのエントリを解凍します。

ループを入力せずにサブディレクトリ内のすべてのエントリを解凍します。

.rarそのため、複数のフォルダにある複数のファイルを解凍しようとしました。一部のパッケージはわずかに異なり、屋根ふきによって問題が発生する可能性があります。

- folder 1
        - file.part01.rar
        - file.part02.rar
        - ...
- folder 2
        - file.r01
        - file.r02
        - file.rar
- folder 3
        - file1.rar
        - file2.rar
        - ...

操作が完了したり、その後for f in *.rar; do unrar e $f;doneはループに入り、すでに完了したファイルの圧縮を解放し続けます。part01.rar&はpart02.rarすべてrarファイルであり、コマンドを満たすためです。

この循環を止めるために私ができることはありますか?

50個以上のフォルダがあるため、すべてのフォルダを個別に参照したくありません。

答え1

partN.rarN1より大きいもので終わるファイルを除外したいようです。使用zsh:

set -o extendedglob
for file (./**/(^*part<2->).rar(N.)) echo unrar e $file

echo効果が満足のいく場合は削除してください。

の場合、bash状況はもう少し複雑です。

(export LC_ALL=C; shopt -s extglob globstar nullglob
for file in ./**/!(*part*(0)@([2-9]|[1-9]+([0-9]))).rar; do
  [ -f "$file" ] || continue
  [ -L "$file" ] && continue
  echo unrar e "$file"
done)

またはGNUを使用してくださいfind

LC_ALL=C find . -name '*.rar' -type f -regextype egrep \
  ! -regex '.*part0*([2-9]|[1-9][0-9]+)\.rar' \
  -exec echo unrar e {} \;

(隠しrarファイルまたは隠しディレクトリにあるrarファイルも考慮されます。)

unrar lあるいは、ファイル出力を解析して、単一ボリュームアーカイブまたはマルチボリュームアーカイブの最初のボリュームを確認することもできます。

ここではunrar 5.61でテストしました。rarlab.comバージョン5 RARアーカイブ(という名前のアーカイブがないと仮定$'whatever\nDetails: whatever.rar')で、ここでzsh

is_first_volume() {
  unrar l "${1-$REPLY}" 2>&1 | awk '
    /^Details: / {
       is_rar = /RAR/
       if (/volume/) volume = $NF
       exit
    }
    END {
      if (!is_rar || volume > 1) exit 1
    }'
}

for file (./**/*.rar(N.+is_first_volume)) echo unrar e $file

答え2

たぶん試してみてください:

find . -type f -name '*.rar' -print0 | xargs -0I{} unrar e {}

答え3

あなたの質問を正しく理解したら、ファイルのスナップショットを撮り、.rarそのファイルを解凍したいだけです。.rarrarファイルの元のスナップショットから他のファイルを解凍しないでください。

# put all files currently in the directory in a variable
csc_rarfiles=(*.rar)
# now iterate over the files contained in the array and unrar only those
for f in "${csc_rarfiles[*]}"; do unrar e "$f"; done

答え4

unrar e -r -o- *.rar

奇跡的に動作します。現在のディレクトリに抽出するだけで、ターゲットディレクトリを追加してそこにあるすべてのファイルを抽出することもできます。

http://www.beginninglinux.com/home/data-compression/unrar-all-files-from-multiple-subdirectories-at-once

関連情報