web-dev-qa-db-fra.com

LINUX: Lier tous les fichiers d'un répertoire à un autre

Je veux lier (ln -s) tous les fichiers qui se trouvent dans/mnt/usr/lib/dans/usr/lib /

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

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

Je suppose que cela appartient au superutilisateur, cependant.

192
user156676

GNU cp a une option pour créer des liens symboliques au lieu de les copier.

cp -rs /mnt/usr/lib /usr/

Notez que ceci est une GNU introuvable dans POSIX cp .

83
caf

Les solutions posté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 voulez 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 /usr/lib ne pas /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
15
Cascabel
ln -s /mnt/usr/lib/* /usr/lib/
13