Hoe koppel ik alle bestanden van de ene map naar de andere in bash?

Ik wil ( ln -s) alle bestanden in /mnt/usr/lib/koppelen aan /usr/lib/

Er zijn veel bestanden, hoe kan dit snel worden gedaan? 🙂


Antwoord 1, autoriteit 100%

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

Ik denk dat dit echter van superuser is.


Antwoord 2, autoriteit 45%

GNU cpheeft een optie om symbolische links te maken in plaats van te kopiëren.

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

Let op: dit is een GNU-extensie die niet gevonden wordt in POSIX cp.


Antwoord 3, autoriteit 10%

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

Antwoord 4, autoriteit 9%

De geposte oplossingen zullen geen verborgen bestanden koppelen. Probeer dit om ze op te nemen:

cd /usr/lib
find /mnt/usr/lib -maxdepth 1 -print "%P\n" | while read file; do ln -s "/mnt/usr/lib/$file" "$file"; done

Als je toevallig de mappen recursief wilt maken en alleen bestanden wilt koppelen (zodat als je een bestand in een map maakt, het echt in /usr/libstaat en niet in /mnt/usr/lib), zou je dit kunnen doen:

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

Other episodes