Cela n'inclut pas les fichiers cachés et lie des répertoires entiers. Si l'un de ces éléments n'est pas ce que vous voulez, voyez ma réponse. Sinon, c'est le moyen le plus court.
Cascabel
Vous avez raison. Mais les bibliothèques ne sont généralement pas cachées. Dans tous les cas, les dotfiles sont impliqués, votre solution est plus pratique.
1
va-t-il pointer vers l'autre dossier en permanence?
nmkyuppie
@YuPPie Je suppose, cela crée simplement un lien direct vers chaque fichier du répertoire. (c'est ce que je voulais aujourd'hui, donc +1: D)
Nom d'affichage
2
@SargeBorsch Il crée des liens symboliques (les liens physiques sont différents).
jsejcksn
90
GNU cpa une option pour créer des liens symboliques au lieu de copier.
cp -rs /mnt/usr/lib /usr/
Notez qu'il s'agit d'une extension GNU introuvable dans POSIXcp .
Les solutions publiées ne lieront aucun fichier caché. Pour les inclure, essayez ceci:
cd /usr/lib
find /mnt/usr/lib -maxdepth 1 -print "%P\n" | while read file; do ln -s "/mnt/usr/lib/$file" "$file"; done
Si vous souhaitez créer de manière récursive les répertoires et ne lier que les fichiers (de sorte que si vous créez un fichier dans un répertoire, il ne l'est vraiment /usr/libpas /mnt/usr/lib), vous pouvez le faire:
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
Je pense que cela devrait également fonctionner comme un moyen de joker dans les fichiers cachés, si vous avez activé le globbing étendu dans bash. Il correspond à tout ce qui commence par un point, suivi de quelque chose d'autre que rien ou d'un autre point (c'est-à-dire qu'il exclut ./et ../):ln -s /mnt/usr/lib/.!(|.)* /usr/lib
Réponses:
Je suppose que cela appartient au super-utilisateur, cependant.
la source
GNU
cp
a une option pour créer des liens symboliques au lieu de copier.Notez qu'il s'agit d'une extension GNU introuvable dans POSIX
cp
.la source
la source
Les solutions publiées ne lieront aucun fichier caché. Pour les inclure, essayez ceci:
Si vous souhaitez créer de manière récursive les répertoires et ne lier que les fichiers (de sorte que si vous créez un fichier dans un répertoire, il ne l'est vraiment
/usr/lib
pas/mnt/usr/lib
), vous pouvez le faire:la source
./
et../
):ln -s /mnt/usr/lib/.!(|.)* /usr/lib