Tratando de responder a la pregunta ¿Son posibles las verdaderas carpetas dinámicas (NO una "Smart Folder" SavedSearch)? Me tropecé con el problema de poner en bucle 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 para debería crear enlaces blandos 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 archivo sin espacios.
-
La respuesta a un similar simplemente sugiere citar $File (
... "$File" ...
). Esto no funciona - simplemente crea enlaces blandos rotos con nombres de las cadenas contiguas en el nombre del archivo original: un archivo llamado "1. Artista - Canción - Mezcla.mp3" creará cuatro o cinco enlaces blandos: "1.", "Artista", "Canción", "Mix.mp3" y "-". -
Escapando los espacios mediante la canalización de los resultados de mdfind a un comando sed sustituyendo un espacio por un espacio escapado
\
dará como resultado algo así como "\ 1.", "\ 1. Artista", etc. -
Creación de 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 escapo correctamente de esos espacios en las rutas?