134 votes

Comment faire un lien symbolique de tous les fichiers d'un répertoire à un autre en bash ?

Je veux faire un lien ( ln -s ) tous les fichiers qui sont dans /mnt/usr/lib/ en /usr/lib/

Il y a beaucoup de fichiers, comment faire rapidement ? :)

217voto

flokra Points 5804
ln -s /mnt/usr/lib/* /usr/lib/

Je suppose que ça appartient au super-utilisateur.

97voto

caf Points 114951

GNU cp a 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 non trouvée dans POSIX cp .

21voto

ln -s /mnt/usr/lib/* /usr/lib/

20voto

Jefromi Points 127932

Les solutions affiché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 récursivement les répertoires et ne lier que les fichiers (de sorte que si vous créez un fichier dans un répertoire, il se trouve réellement dans le répertoire /usr/lib no /mnt/usr/lib ), vous pourriez faire ceci :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X