2009-11-04 132 views
1

我正在編寫一個腳本來跟蹤渲染(成千上萬的圖像文件)中丟失的幀。找到序列中的編號幀我這樣做: - 當文件編號喜歡foo_001.bar(它的數量相匹配applescript + shell腳本問題

set thecontents to every paragraph of (do shell script 
"while IFS= read -r -d '' file; 
do echo \"$file\"|sed -E \"s|.*[^[:digit:]]0*([[:digit:]]+)\\..*|\\1|\" ; 
done< <(find \"" & thefolderPPath & "\" -name \"*.*\" -print0)") 

發現找到的所有文件,和sed去掉一切,但尾隨數了他們或者即使它們是foo3_001.bar),它會查找非數字,然後是一系列數字,後跟一個點擴展名,然後刪除除數字之外的所有數字。

它工作在shell,如果我運行像這樣(不逃逸)

while IFS= read -r -d '' file 
do echo "$file"|sed -E "s:.*[^[:digit:]]0*([[:digit:]]+)\..*:\1:" 
done < <(find "/Volumes/foo/imagesequence/" -name "*.*" -print0) 

它產生數字的一個不錯的名單,但在AppleScript的,我得到

「SH: -c:行0:近 意外的標記'<'

任何想法語法錯誤,我可以打破的sed使用AppleScript實現它函數和查找功能放入單獨的shell腳本中,但速度較慢。

回答

2

看起來你正在使用bash進程替換的位置:

<(find "/Volumes/foo/imagesequence/" -name "*.*" -print0) 

的AppleScript的do shell script命令始終使用/bin/shPosix外殼語義)和進程替換不Posix /bin/sh支持。重寫腳本以避免Bash -isms或遵循建議here關於如何使用另一個shell運行AppleScript shell腳本。

+0

那麼會是誰呢?謝謝。 – stib 2009-11-04 06:52:49