LINUX: Tüm dosyaları bir dizinden diğerine bağlayın [kapalı]


123

Ben (link istiyorum ln -sbulunan tüm dosyaları) /mnt/usr/lib/içine/usr/lib/

Çok fazla dosya var, nasıl hızlı bir şekilde yapılabilir? :)


Kaç dosya "çok" ve ne kadar hızlı "hızlı" kabul ediyorsunuz?
— Eric Smith

4
Bu 50:50 "serverfault" ya da "superuser" a uysa da programlama değil, yani stackoverflow için değil.
— Marc Gravell

Yanıtlar:


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

Sanırım bu süper kullanıcıya ait.


6
Bu, gizli dosyaları içermez ve tüm dizinleri birbirine bağlar. Bunlardan biri istediğiniz değilse, cevabıma bakın. Aksi takdirde, en kısa yol budur.
— Cascabel

Haklısın. Ancak kütüphaneler genellikle gizli değildir. Her durumda dotfiles söz konusu olduğunda, çözümünüz daha kullanışlı hale gelir.

1
kalıcı olarak diğer klasöre işaret edecek mi?
— nmkyuppie

@YuPPie Sanırım, dizindeki her dosyaya sabit bağlantı oluşturuyor. (bugün istediğim buydu, yani +1: D)
— Görünen Ad

2
@SargeBorsch Sembolik bağlantılar oluşturur (sabit bağlantılar farklıdır).
— jsejcksn

90

GNU cp, kopyalama yerine sembolik bağlar yaratma seçeneğine sahiptir.

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

Bunun POSIX'tecp bulunmayan bir GNU uzantısı olduğunu unutmayın .


4
Bu şekilde sembolik bağlantı kurmak için mevcut dizininiz / usr / olmalıdır
— Soul_man

@caf Hedef mevcut klasör ise, lib klasörü / usr / klasöründe oluşturulur
— Tamil Selvan C

2
İyi cevap. -S yerine -l ile sabit bağlantılar oluşturmak için de kullanılabilir.
— Faks


15

Yayınlanan çözümler hiçbir gizli dosyayı bağlamayacaktır. Bunları dahil etmek için şunu deneyin:

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

Dizinleri özyinelemeli olarak oluşturmak ve yalnızca dosyaları bağlamak istemeniz gerekirse (böylece bir dizin içinde bir dosya oluşturursanız, gerçekten içinde /usr/libolmaz /mnt/usr/lib), şunu yapabilirsiniz:

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

2
Bash'ta genişletilmiş globbing'i açtıysanız, bunun gizli dosyalarda joker karakter için bir yol olarak çalışması gerektiğine inanıyorum. Hiçbir şey ya da başka bir nokta (yani o dışlayan başka bir şey, ardından bir nokta ile başlayan herşeyi eşleşir ./ve ../):ln -s /mnt/usr/lib/.!(|.)* /usr/lib
— Cascabel
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.