GNU/Linux >> Linux Esercitazione >  >> Linux

Come convertire il collegamento simbolico in un file normale?

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.


Linux
  1. Come convertire file in codifica UTF-8 in Linux

  2. Come convertire file system ext in Btrfs

  3. Come posso collegare simbolicamente un file in Linux?

  4. Come posso convertire un puntatore di file ( FILE* fp ) in un descrittore di file (int fd)?

  5. Come convertire un file TAR in un file ISO

Come spostare un file in Linux

Come collegare simbolicamente un file in Linux

Come convertire l'immagine della fotocamera Raw in JPEG in Linux

Come convertire un file Windows in un file UNIX

Come convertire un file .pem in un file .ppk su Windows e Linux

Come convertire la chiave privata di PuTTY (.ppk) in chiave SSH