Questa è una domanda aggiuntiva che è iniziata con questo - Come modificare i collegamenti simbolici in OS X?
Ora che so come modificare il link a cui puntano i link simbolici, sto cercando di capire come farlo in modo ricorsivo per qualsiasi link simbolico rotto. Sono un ragazzo PHP, quindi questa roba della CLI è alquanto strana per me ...
Sembra che ci siano alcuni elementi specifici a questo, vale a dire:
- Identifica un link simbolico rotto e recupera la sua posizione
- Ottieni la vecchia, ora non corretta, destinazione per il collegamento simbolico
- Costruisci il nuovo percorso corretto per il collegamento simbolico in modo che punti a
- Modifica il link simbolico
Il primo è abbastanza semplice:
find /path/to/search -type l | while read f; do if [ ! -e "$f" ]; then ls -l "$f"; fi; done
Questo mi dà una bella lista di tutti i link simbolici rotti trovati sotto la directory fornita. Ma credo che avrei bisogno di memorizzare la posizione di ciascuno in una variabile (array?) Per lavorare con esso.
Successivamente, sembra che cambiando l'azione fornita nella parte "allora" della logica, si otterrebbe la soluzione.
L'elemento 2 può essere recuperato usando:
readlink /path/to/broken/symlink
Quindi sembra che dobbiamo spingerlo in una variabile. Non sono chiaro su come farlo nel terminale.
Il numero 3 sarebbe una semplice modifica al percorso recuperato durante il passaggio 2. Devo sostituire il vecchio nome dell'unità, con il nuovo. Quindi cambia:
/Volumes/Old\ Drive/path/to/symlink
a
/Volumes/New\ Drive/path/to/symlink
Inoltre non è chiaro esattamente su come farlo all'interno di uno script CLI. Sembra che sia necessaria una sorta di sostituzione di stringhe. Qualcosa come str_replace nel mondo PHP.
Finalmente il passaggio 4 può essere fatto tramite:
ln -f -s /path/to/new/location/of/original /path/to/location/of/broken/symlink/
come dettagliato nella mia altra domanda, precedentemente collegata sopra.
In che modo racchiudere questi concetti insieme per ottenere il risultato desiderato di correggere tutti i miei collegamenti simbolici in un solo colpo?