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") donee usarlo
for File in "${result[@]}"; do ln -s "$File" $DrumFoldr; donenon funziona neanche.
Come posso sfuggire correttamente a quegli spazi nei percorsi?
mdfindha un'opzione nulla. È quindi possibile provare a eseguire il piping dei risultatixargs.