Cercare di rispondere alla domanda Sono possibili cartelle dinamiche vere (NON una SavedSearch "Smart Folder")? Mi sono imbattuto nel problema di ripetere i risultati di una ricerca mdfind come percorsi citati o sfuggiti.
Snippet di codice:
for File in $(mdfind -onlyin $MusicSamples 'kMDItemAudioBitRate >= "44000" && _kMDItemUserTags = "Sample"')
do
ln -s $File $DrumFoldr
done
Il ciclo for dovrebbe creare collegamenti soft di tutti i file corrispondenti nella cartella $ MusicSamples o nelle sue sottocartelle nella cartella $ DrumFoldr. Il ciclo funziona per file con percorsi / nomi file senza spazi.
La risposta a una domanda simile suggerisce semplicemente di citare $ File (
... "$File" ...
). Questo non funziona - crea semplicemente collegamenti soft rotti con nomi delle stringhe contigue nel nome del file originale: un file chiamato "1. Artist - Song - Mix.mp3" creerà quattro o cinque collegamenti soft: "1." , "Artist", "Song", "Mix.mp3" e "-".L'escape degli spazi tramite il piping dei risultati mdfind a un comando sed che sostituisce uno spazio con uno spazio di escape
\
genererà qualcosa come "\ 1.", "\ Artist" ecc.Creazione di una matrice dei risultati mdfind con:
result=() mdfind ... | while IFS= read -r filename; do result+=("$filename") done
e usarlo
for File in "${result[@]}"; do ln -s "$File" $DrumFoldr; done
non funziona neanche.
Come posso sfuggire correttamente a quegli spazi nei percorsi?
mdfind
ha un'opzione nulla. È quindi possibile provare a eseguire il piping dei risultatixargs
.