Cercando di rispondere alla domanda Sono veri cartelle dinamiche (NON una "Smart Folder" SavedSearch) possibile? Mi sono imbattuto nel problema del loop dei risultati di una ricerca mdfind come percorsi quotati o di escape.
Frammento di codice:
for File in $(mdfind -onlyin $MusicSamples 'kMDItemAudioBitRate >= "44000" && _kMDItemUserTags = "Sample"')
do
ln -s $File $DrumFoldr
done
Il ciclo per dovrebbe creare collegamenti software di tutti i file corrispondenti nella cartella $ MusicSamples o nelle relative sottocartelle nella cartella $ DrumFoldr. Il ciclo funziona per file con percorsi / nomi di file senza spazi.
-
La risposta a simile question suggerisce semplicemente di citare $ File (
... "$File" ...
). Questo non funziona: crea semplicemente collegamenti software non funzionanti con i nomi delle stringhe contigue nel nome del file originale: un file chiamato "1. Artist - Song - Mix.mp3" creerà quattro o cinque collegamenti software: "1." , "Artista", "Canzone", "Mix.mp3" e "-". -
Sfuggire gli spazi collegando i risultati di mdfind a un comando sed che sostituisce uno spazio con uno spazio di escape
\
avrà come risultato "\ 1.", "\ Artist" ecc. -
Creazione di un array dei risultati mdfind con:
result=() mdfind ... | while IFS= read -r filename; do result+=("$filename") done
e il suo utilizzo in
for File in "${result[@]}"; do ln -s "$File" $DrumFoldr; done
non funziona neanche.
Come faccio a fugare correttamente quegli spazi nei percorsi?