성공적인 추출 후 파일 제거하기 unrar rm shopt globstar


0
shopt -s globstar
for f in **/*.rar; do
    dir=`dirname "$f"`;
    unrar e "$f" "$dir" && rm -frv "${f::-2}*";
done

rm 명령을 테스트 한 결과 파일이 올바른 경로입니다. 잘못된 경로 또는 어떤 것에 대해서도 오류가 발생하지 않습니다. 나는 find를 사용하는 다른 방법이 있다는 것을 알고있다. 그러나 그것은 무의미하며 여분의 CPU 사이클을 사용한다. 이것은 내가 발견 한 모든 것에서 작동해야한다. rm 명령을 올바르게 사용하는 방법에 대한 아이디어가 있습니까?

bash  unix  script  rar 

답변:


1

큰 따옴표를 제거하면 작동합니다 :

shopt -s globstar
for f in **/*.rar; do
    dir=`dirname "$f"`;
    unrar e "$f" "$dir" && rm -frv ${f::-2}*;
done

스타 숯의 배쉬 확장 * 따옴표 안에 나타나지 않습니다.

예 :

echo dir/*.rar 줄 수도 있습니다 :

dir/file1.rar
dir/file2.rar
dir/file3.rar

그러나 echo "dir/*.rar" 줄게:

dir/*.rar

( rm 명령은 말 그대로 문자를 포함하는 파일 이름을 삭제하려고 시도합니다.)


이봐, 정말 고마워! 나는 그것의 문자 적 ​​검색으로서 파일 이름 / r *을 찾지 못하여 오류의 결과를 해석해야만했다. 나는 그것을 올바르게 표시하는 메아리에 혼란스러워했다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.