mdfind collegato all'automatico?

0

Ho un'app Automator chiamata convert2xlsx.app che accetta gli input dei file e avvia l'azione Converti formato di file Excel per convertire i file .xls in file .xlsx. Posso chiamarlo dalla riga di comando per un file in questo modo:

automator -i "some file name.xls" ~/Desktop/convert2xlsx.app

e funziona perfettamente.

Ho anche una query della riga di comando come questa:

mdfind -onlyin . 'kMDItemContentType == com.microsoft.excel.xls'

che trova tutti i file .xls nella directory di lavoro e di seguito.

Mi piacerebbe davvero sposare i due insieme ma non riesco a farlo funzionare.

Il mio primo pensiero è stato questo:

mdfind -onlyin . 'kMDItemContentType == com.microsoft.excel.xls' | xargs -J {} automator -i "{}" ~/Desktop/convert2xlsx.app

ma converte solo l'ultimo file nei risultati restituiti da mdfind. Ho anche provato:

mdfind -onlyin . 'kMDItemContentType == com.microsoft.excel.xls' -0 | xargs -0 -J {} automator -i "{}" ~/Desktop/convert2xlsx.app

con lo stesso risultato.

Sono riuscito a metterlo insieme in Automator, usando un'azione AppleScript per ottenere la directory della finestra del Finder frontale, un'azione Shell Script per eseguire mdfind in quella directory e quindi il formato di conversione dei file Excel sul risultato di il mdfind. Quindi, problema risolto. Sìì! Ma ...

Mi piacerebbe davvero sapere dove stavo sbagliando sulla riga di comando, poiché sto facendo uno sforzo per imparare lo scripting di Bash e usarlo di più. Qualche consiglio?

    
posta Patrick Wynne 01.01.2015 - 05:41
fonte

1 risposta

1

Come test ho creato un'app di Automator che copia gli elementi del Finder in una directory. "Copia elementi del Finder" Azione

E poi usato

theFind='mdfind -onlyin . 'kMDItemContentType == com.microsoft.excel.xls'';automator -i "$theFind"  /Users/UserName/Desktop/testF/test2.app

I backpicks "" "assicurano che il primo risultato dei comandi sia inserito nella variabile theFind e quindi possiamo passare theFind al prossimo comando chiamandolo con" $ il ritrovamento". Anche le virgolette attorno ad esso sono sicure che qualsiasi testo trasmesso sia citato.

L'app di Automator viene quindi passata a un elenco di alias.

{alias "hard drive:Users:Username:Dropbox:Kit:Unit2.xls", alias "hard drive:Users:Username:Dropbox:Kit:Unit3.xls"}

Quindi, a seconda delle altre azioni che potresti dover convertire in percorsi POSIX.

{"/Users/Username/Dropbox/Kit/Unit2.xls", "/Users/Username/Dropbox/Kit/Unit3.xls"}

    
risposta data 01.01.2015 - 15:44
fonte

Leggi altre domande sui tag