Uso de la etiqueta ¿Cómo puedo cortar y analizar las rutas de los archivos en las etiquetas?

0

Estoy usando Tag y Hazel y me gustaría revisar los archivos en nuestro servidor de forma recursiva, obtener sus rutas de archivos y nombres de archivos y analizar todo en etiquetas para aplicar al archivo. ¿Hay un script de shell que puede hacer esto? Puedo usar Leap by Ironic Software para eliminar todo el sistema de etiquetas de basura, pero esto me da un verdadero comienzo en un sistema de etiquetado automático para todos mis archivos.

Básicamente voy a tomar un nombre de archivo como

  

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

Trunca el /Volumes/media/Clientele/Stock/ en la parte superior y la extensión de archivo .eps desde el final, luego cut el resto en etiquetas separadas:

  • Conjuntos comprados
  • Paquete Vintage
  • cosecha
  • paquete
  • 7
  • compensación
  • 30
  • CIRCULAR
  • VECTOR
  • TEXTURAS
  • C03

... elimine los espacios iniciales y finales, cambie a minúsculas y luego vuelva a aplicar esas etiquetas al archivo con tag .

Además, también sería útil eliminar las etiquetas del sistema que son solo números.

Actualización: Necesito hacer esto específicamente:

Hazel maneja la recursión, por cada archivo que encuentra:

  • Almacene $working_folder y $filepath
  • cut el $working_folder del $filepath
  • cut the $result en los caracteres _-. <space> , y se almacena en una lista o matriz
  • recorra la lista o la matriz y sed 's/^[ \t]*//;s/[ \t]*$//' para eliminar los espacios en blanco iniciales y finales (de enlace )
  • convertir la matriz en una cadena separada por comas para alimentar a tag -s $comma_separated_tags $filepath

Simplemente no sé cómo poner eso en un formato de script bash.

    
pregunta mochabcha 20.10.2015 - 19:50

1 respuesta

1

ejecute 'buscar' desde un directorio raíz en busca de archivos sin formato (-type f?) y -exec un script bash en cada archivo (o quizás en el automatizador).

Parece que necesitarás un poco de 'nombre base' y 'sed'.

Agregue a una cadena vacía para cada ruta de entrada y trátela como una lista para ese archivo. Creo que con 'etiqueta' puedes pasar una lista separada por comas, así que puedes adjuntar una (tratar primero sin comas) o postprocesar usando 'sed'. bucle del peor de los casos sobre la cadena de la lista y ejecute 'etiqueta' cada vez.

'etiqueta' puede ser lo suficientemente inteligente como para agregar etiquetas que aún no tienen lo que se ha pasado, de lo contrario, la parte superior de la secuencia de comandos tal vez quiera anularse si el archivo ya contiene etiquetas.

No es trivial para escribir, pero si no está familiarizado con bash, etiquételo y sedelo. Sería un buen ejercicio de aprendizaje.

    
respondido por el rpk 20.10.2015 - 23:37

Lea otras preguntas en las etiquetas