2009-11-04 8 views
1

J'écris un script pour garder trace des images manquantes dans un rendu (des milliers de fichiers image). pour trouver les images numérotées dans la séquence que je fais ceci:problème de script 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)") 

find trouve tous les fichiers et les bandes sed tout, mais le nombre de fuite hors les - il correspond aux chiffres lorsque le fichier sont numérotés comme foo_001.bar (ou même si elles sont foo3_001.bar) il cherche un non chiffre, suivi d'une série de chiffres, suivi d'une extension de point, et éloigne tout sauf les chiffres.

Il travaille dans la coquille, si je lance comme ça (sans les échappements)

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

il produit une belle liste de nombres, mais AppleScript je reçois

« sh: -c: ligne 0: erreur de syntaxe près jeton inattendu `< '

Toutes les idées que je peux le mettre en œuvre avec AppleScript en brisant le sed fonction et la fonction de recherche dans des scripts shell distincts, mais c'est beaucoup plus lent.

Répondre

2

Il semble que vous utilisez bash substitution de processus ici:

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

La commande AppleScript do shell script utilise toujours /bin/sh (Posix sémantique shell) et la substitution de processus ne soit pas pris en charge dans Posix /bin/sh. Réécrivez le script pour éviter les Bash -isms ou suivez les suggestions here pour savoir comment exécuter un script shell AppleScript avec un autre shell.

+0

Eh bien, qui aurait un thunk? Merci. – stib