Voglio collegare ( ln -s
) tutti i file che si trovano /mnt/usr/lib/
in/usr/lib/
Ci sono molti file, come può essere fatto velocemente? :)
Voglio collegare ( ln -s
) tutti i file che si trovano /mnt/usr/lib/
in/usr/lib/
Ci sono molti file, come può essere fatto velocemente? :)
Risposte:
ln -s /mnt/usr/lib/* /usr/lib/
Immagino che questo appartenga al superutente, però.
GNU cp
ha un'opzione per creare collegamenti simbolici invece di copiare.
cp -rs /mnt/usr/lib /usr/
Nota che questa è un'estensione GNU non trovata in POSIXcp
.
ln -s /mnt/usr/lib/* /usr/lib/
Le soluzioni pubblicate non collegheranno alcun file nascosto. Per includerli, prova questo:
cd /usr/lib
find /mnt/usr/lib -maxdepth 1 -print "%P\n" | while read file; do ln -s "/mnt/usr/lib/$file" "$file"; done
Se vi capitasse di voler creare in modo ricorsivo le directory ei file di collegamento solo (in modo che se si crea un file all'interno di una directory, è davvero in /usr/lib
non /mnt/usr/lib
), si potrebbe fare questo:
cd /usr/lib
find /mnt/usr/lib -mindepth 1 -depth -type d -printf "%P\n" | while read dir; do mkdir -p "$dir"; done
find /mnt/usr/lib -type f -printf "%P\n" | while read file; do ln -s "/mnt/usr/lib/$file" "$file"; done
./
e ../
):ln -s /mnt/usr/lib/.!(|.)* /usr/lib