루프를 입력하지 않고 하위 디렉터리의 모든 항목을 압축 해제합니다.

루프를 입력하지 않고 하위 디렉터리의 모든 항목을 압축 해제합니다.

.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

관련 정보