Cómo escalar correctamente los espacios de los resultados de mdfind para usarlos en un bucle for

2

Intentando responder la pregunta son ciertas Carpetas dinámicas (¿NO es posible una búsqueda guardada en la “carpeta inteligente”? Me encontré con el problema de hacer un bucle con los resultados de una búsqueda mdfind como rutas citadas o escapadas.

Fragmento de código:

for File in $(mdfind -onlyin $MusicSamples 'kMDItemAudioBitRate >= "44000"  && _kMDItemUserTags = "Sample"')
do
    ln -s $File $DrumFoldr
done

El bucle para debe crear enlaces flexibles de todos los archivos coincidentes en la carpeta $ MusicSamples o sus subcarpetas en la carpeta $ DrumFoldr. El bucle funciona para archivos con rutas / nombres de archivos sin espacios.

  • La respuesta a un similar la pregunta simplemente sugiere citar $ Archivo ( ... "$File" ... ). Esto no funciona, simplemente crea enlaces blandos rotos con nombres de cadenas contiguas en el nombre del archivo original: un archivo llamado "1. Artista - Canción - Mix.mp3" creará cuatro o cinco enlaces blandos: "1". , "Artista", "Canción", "Mix.mp3" y "-".

  • Escapar de los espacios canalizando los resultados de mdfind a un comando sed reemplazando un espacio con un espacio de escape resultará en algo como "\ 1.", "\ Artist" etc.

  • Creando una matriz de los resultados de mdfind con:

    result=()
    mdfind ... | while IFS= read -r filename; do
      result+=("$filename")
    done
    

    y usarlo en for File in "${result[@]}"; do ln -s "$File" $DrumFoldr; done tampoco funciona.

¿Cómo puedo escapar adecuadamente de esos espacios en las rutas?

    
pregunta klanomath 17.04.2017 - 21:42

0 respuestas

Lea otras preguntas en las etiquetas