for f in $(find -type l);do cp --remove-destination $(readlink $f) $f;done;
- Controlla i collegamenti simbolici nella directory corrente e nelle sottodirectory
find -type l
- Ottieni il percorso del file collegato
readlink $f
- Rimuovi il collegamento simbolico e copia il file
cp --remove-destination $(readlink $f) $f
Non esiste un singolo comando per convertire un collegamento simbolico in un file normale. Il modo più diretto è usare readlink
per trovare il file a cui punta un collegamento simbolico, quindi copiare quel file sul collegamento simbolico:
cp --remove-destination `readlink bar.pdf` bar.pdf
Ovviamente, se bar.pdf
è, infatti, un file normale per cominciare, quindi questo ostruirà il file. Sarebbe quindi consigliabile un controllo di integrità.
Solo un rimaneggiamento delle risposte di altri, ma aggiungendo il "controllo di integrità" per garantire che il collegamento passato sia in realtà un collegamento simbolico:
removelink() {
[ -L "$1" ] && cp --remove-destination "$(readlink "$1")" "$1"
}
Ciò significa che se il file è un collegamento simbolico, esegui il comando di copia.