2011-11-06 2 views
0
에게

시스템을 구성하는 배쉬 쉘 (터미널)
맥 bash는 스크립트가 다운로드 된 파일 형식

내가 선택적으로 내 다운로드 폴더를 구성하는 스크립트를 작성하는 것을 시도하고있다.

목적 :
- 스크립트가 특정 파일 형식 (예 : ".RAR")와 브라우저에서 다운로드 한 파일을 켰을 때, 다운로드의 하위 디렉토리에 저장됩니다 (예 : "rar_downloads") .
- 다운로드 디렉토리의 현재 파일에 영향을주지 않습니다.
- 스크립트가 해제되면 다운로드 파일은 일반적으로 다운로드 디렉토리에 저장됩니다.

이 글을 쓰는 방법에 대한 통찰력을 얻었습니다. 고맙습니다!

+0

AppleScript (Automator workflow?)가 더 쉬운 해결책이 아닌지 궁금합니다. –

답변

0

간단한 개요 : 동작의 시간 범위를 정의하는 스크립트 온 및 스크립트 오프의 두 가지 타임 스탬프가 필요합니다. 브라우저 통합이 필요하기 때문에 스크립트를 지속적으로 사용하는 것이 매우 어렵습니다. 따라서 수동으로 (또는 crontab을 통해) 실행하십시오.

거친 윤곽 : 라인

find Downloads -newer script-on -and -not -newer script-off | while read filename; do 
    SUFFIX=`echo "$filename" | sed -n -e 's/.*\.\([^./]*\)$/\1/p'`; 
    if [ -n "$SUFFIX" ]; then mv "$filename" "Downloads/${SUFFIX}_downloads"; fi 
done 

Sed의 식 (2 개)를 추출 접미사 지난 후 파일명, 즉 단자부. 접미사가 없으면 출력을 인쇄하지 않습니다.

+0

http://www.thegeekstuff.com/2010/07/bash-case-statement/ 예제 3. 여러 파일 형식을 일부 폴더에 집계하려는 경우 case 문을 사용하면 도움이됩니다 (예 : .jpeg, .jpg, .png를 ./images 하위 폴더에 추가). "mkdir -p"명령은 대상 서브 디렉토리가 존재하는지 확인하는 데 도움이됩니다. @thiton의 아주 작은 개선점은 "SUFFIX = $ {filename ## * \.}"을 사용하여 파일 확장명을 캡처하는 것입니다. – phatfingers

+0

신속한 답장을 보내 주셔서 감사합니다! 귀하의 코드는 약간 압도적입니다. 그래서 나는 여기에서 무슨 일이 일어나는지 이해하기 전에 (정규 표현식은 말할 것도없이) 사용 된 명령을 연구하는데 약간의 시간을 할애해야합니다. – Red