2017-05-18 1 views
1

OSX에서 Path Finder에서 선택한 파일의 이름을 바꾸는 zsh 스크립트를 만듭니다. 스크립트는 applescript를 통해 경로 배열을 가져옵니다. 배열 항목은 이름 바꾸기/이동을 위해 for 루프에서 처리됩니다. 처럼 배열 출력은 같습니다 스크립트 파일 이름에 공백이 포함 된 경우를 제외하고, 작동Bash/ZSH - for 루프에 공백이있는 파일 이름을 처리하는 방법 ([@] 사용)

'/Users/bwitime/Downloads/2017-05-17 at 12.08.jpeg', '/Users/bwitime/Downloads/Raspberry Pi - 5 Book Collection.pdf' 

.

read -A myFiles < <(/usr/bin/osascript <<'EOS'; 
tell application "Path Finder" 
    set finderSelection to {} 
    set selectedItems to selection 
    repeat with theItem in selectedItems 
     set selFile to quoted form of (get POSIX path of (contents of theItem)) 
     copy selFile to the end of finderSelection 
    end repeat 
end tell 

return finderSelection 
EOS 
) 


for i in ${myFiles[@]} 
do 

    FILE=$(echo "$i" | sed 's:,::g' | sed s:"'"::g) 
    DIR="${FILE:h}" 
    FILENAME="${FILE:t}" 
    FOLDERPREFIX="${FILE:h:t}" 
    mv "$FILE" "$DIR/$FOLDERPREFIX-$FILENAME" 
done 

$ 내가 수익률로 : 다음은 스크립트의 이미 IFS = '\ n을'을 설정하려고했습니다

'/Users/bwitime/Downloads/2017-05-17 
at 
12.08.jpeg', 
'/Users/bwitime/Downloads/Raspberry 
Pi 

5 
Book 
Collection.pdf' 

,하지만 줄 바꿈 사이가 없기 때문에이 작동하지 않습니다 배열의 파일. 또한 큰 따옴표는 아무 효과가 없습니다.

이 문제를 해결하는 방법은 무엇입니까?

+0

AppleScript는 배열을 반환하지 않습니다. 배열의 * 요소 *에 대한 단일 문자열 표현을 반환합니다. 'read'는 따옴표가 통사론적인 것으로 간주하지 않습니다. – chepner

+0

AppleScript에서도 파일을 이동하지 않는 이유는 무엇입니까? – chepner

답변

0

내부 필드 분리에 ','이 bash는 공간의 장애물을 뛰어 보인다

IFS=$','; 
for i in ${myFiles[@]} 

을 설정해보십시오. 행운을 빕니다!

관련 문제