Bir dizindeki dosyaların her birini başka bir dizine nasıl bağlarım?


15

/fooİçinde birkaç dosya bulunan bir dizin varsa, her girdinin /fooiçine nasıl bağlantı eklerim /bar/?

Örneğin, /foodosyaları vardır a, bve cben üç sembolik oluşturmak istiyorum:

  • /bar/a -> /foo/a
  • /bar/b -> /foo/b
  • /bar/c -> /foo/c

Sadece foo için symlink çubuğu istemediğinizden emin misiniz?
Rich Bradshaw

Bunun asıl uygulaması, bir program yükledim ve yürütülebilir dosyaları yola yüklü olanı eklemek yerine $ PATH'ımdaki standart bir klasöre taşımak istiyorum.
Steven

Sadece yapılandırmak daha iyi bir fikir gibi görünüyor --prefix=.
Merhaba71

Yanıtlar:


18

(GNU) seçeneğini cpşu --symbolic-linkseçenekle kullanabilirsiniz:

prompt$ mkdir foo
prompt$ cd foo
prompt$ touch a b c
prompt$ mkdir ../bar
prompt$ cd ../bar
prompt$ cp --symbolic-link ../foo/* .
prompt$ ls -l
total 0
lrwxrwxrwx. 1 hlovdal hlovdal 8 Jun 12 16:24 a -> ../foo/a
lrwxrwxrwx. 1 hlovdal hlovdal 8 Jun 12 16:24 b -> ../foo/b
lrwxrwxrwx. 1 hlovdal hlovdal 8 Jun 12 16:24 c -> ../foo/c
prompt$

Bu tam olarak çözüm gibi görünüyor. Müthiş!
Steven

Bu çok mükemmel.
noraj

Bu dizinler için de geçerli yapmak için herhangi bir yolu var mı? Bunu çalıştırdığımda "cp: omitting directory './baz'"
uyarısını alıyorum

15

Bunu deneyin:

ln -s /foo/* /bar

Soruda belirtildiği gibi kaynak dizin /foo. Tam olarak belirtilmesi gerektiğini unutmayın (yani kök dizinden başlayarak), böylece diğer örnekler şöyle görünecektir:

ln -s /some/dir/with/baz/* destdir
ln -s /dir/to/link/from/* /dir/to/link/to
ln -s $PWD/stuff/* more/stuff

bu işe yarıyor mu?
ctrlc-root

@ root.ctrlc: Kaynağın tam yolunu belirtmeniz gerekir (ki bu /benim orijinal cevabımdadır ). Bir açıklama ekleyeceğim.
sonraki duyuruya kadar duraklatıldı.

Her şeyi sadece bir komutla symlink olarak kopyalamak istiyorsanız, @hlovdal yanıtı gibi cp -s kullanmanız gerekir, cp -rs /var/www/folder/ .her alt ln -s /var/www/folder/ .klasör dosyasını bilgisayarımdaki alt klasörlerin dosyalarını çoğaltmış gibi değil, symlink olarak kopyalar .
baptx

2

Böyle bir şey mi?

cd /foo
for f in *; do ln -s $PWD/$f /bar; done
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.