Utilizzo di Tag come faccio a tagliare e analizzare i percorsi dei file nei tag

0

Sto usando Tag e Hazel e mi piacerebbe passare in modo ricorsivo sui file sul nostro server, ottenere i loro percorsi di file e nomi di file e analizzare l'intera cosa in tag da applicare al file. C'è uno script di shell che può farlo? Posso usare Leap by Ironic Software per rimuovere i tag del cestino in modo esteso, ma questo mi dà un vero inizio in un sistema di tagging automatico per tutti i miei file.

Fondamentalmente prenderò un nome di file come

/Volumes/media/Clientele/Stock/Purchased Sets/Vintage Bundle/vintage-bundle-7/offset/30_CIRCULAR_VECTOR_TEXTURES/C03.eps

Troncare /Volumes/media/Clientele/Stock/ dalla cima e l'estensione del file .eps dalla fine, quindi cut il resto in tag separati:

  • Set acquistati
  • Pacchetto vintage
  • vintage
  • pacchetto
  • 7
  • offset
  • 30
  • CIRCOLARE
  • VECTOR
  • Trame
  • C03

... rimuovi gli spazi iniziali e finali, cambia i caratteri in minuscolo, quindi riapplica i tag al file con tag .

Inoltre, sarebbe utile anche rimuovere i tag dal sistema che sono solo numeri.

Aggiornamento: ho bisogno di farlo in particolare:

Hazel gestisce la ricorsione così per ogni file trovato:

  • Salva $working_folder e $filepath
  • cut $working_folder da $filepath
  • cut $result con _-. <space> , caratteri e memorizzato in un elenco o in un array
  • scorrere l'elenco o la matrice e sed 's/^[ \t]*//;s/[ \t]*$//' per rimuovere gli spazi bianchi iniziali e finali (dal collegamento )
  • converti l'array in una stringa separata da virgole per alimentare in tag -s $comma_separated_tags $filepath

Non so come inserirlo in un formato di script bash.

    
posta mochabcha 20.10.2015 - 19:50
fonte

1 risposta

1

lancia 'find' da una directory root alla ricerca di file semplici (-type f?) e -esegue uno script bash su ogni file (o forse su un automatore).

Sembra che avrai bisogno di un po 'di "basename" e "sed".

Aggiungi a una stringa vuota per ogni percorso di input e trattalo come una lista per quel file. Credo che con 'tag' sia possibile passare una lista separata da virgole, in modo da poterne aggiungere una (occupandosi prima senza virgola) o post processo usando 'sed'. caso peggiore loop sulla stringa di lista ed eseguire 'tag' ogni volta.

'tag' potrebbe essere abbastanza intelligente da accodare tag che non ha già ciò che è passato, altrimenti la parte superiore dello script potrebbe volerli scaricare se il file contiene già tag.

Non banale da scrivere, ma se non hai familiarità con bash, taggalo e sedilo sarebbe un buon esercizio di apprendimento.

    
risposta data 20.10.2015 - 23:37
fonte

Leggi altre domande sui tag