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?