Chcę łącza ( ln -s
) wszystkich plików znajdujących się /mnt/usr/lib/
w/usr/lib/
Plików jest dużo, jak to zrobić szybko? :)
Chcę łącza ( ln -s
) wszystkich plików znajdujących się /mnt/usr/lib/
w/usr/lib/
Plików jest dużo, jak to zrobić szybko? :)
Odpowiedzi:
ln -s /mnt/usr/lib/* /usr/lib/
Myślę, że to należy do superużytkownika.
GNU cp
ma opcję tworzenia dowiązań symbolicznych zamiast kopiowania.
cp -rs /mnt/usr/lib /usr/
Zauważ, że jest to rozszerzenie GNU, którego nie znaleziono w POSIXcp
.
ln -s /mnt/usr/lib/* /usr/lib/
Opublikowane rozwiązania nie będą łączyły żadnych ukrytych plików. Aby je uwzględnić, spróbuj tego:
cd /usr/lib
find /mnt/usr/lib -maxdepth 1 -print "%P\n" | while read file; do ln -s "/mnt/usr/lib/$file" "$file"; done
Jeśli chcesz rekurencyjnie tworzyć katalogi i tylko pliki z linkami (tak, że jeśli tworzysz plik w katalogu, tak naprawdę /usr/lib
nie jest /mnt/usr/lib
), możesz to zrobić:
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
./
i ../
):ln -s /mnt/usr/lib/.!(|.)* /usr/lib