Kodlanmış çözüm (ler)
1. Otomatik olarak güncellenen kütüphane görünümü
Aşağıdaki arka plan komut dosyasıyla, rasgele sayıda başka klasörün birleşik içeriğini sanal olarak gösteren bir dizin ayarlayabilirsiniz.
Klasörün içeriği (sembolik bağlantılar mevcut) dinamik olarak (birleşik) kaynaklarla senkronize edilir.
Nasıl çalışır
Komut dosyası, kaynak klasörlerin içeriğini ve "kütüphane" görünümü için hedeflenen klasörü düzenli olarak listeler.
- Kaynak klasörlerin herhangi öğeler varsa değil kütüphanede mevcut, bir sembolik kütüphanesinde oluşturulacaktır.
- kütüphanede öğeler, varsa değil kaynak klasörler (aslında bir kırık link) hiçbirinde mevcut, öğe olduğunu kaldırıldı kitaplıktan.
Listeleri karşılaştırmak son derece hafiftir (programlı olarak) ve kaynakları azdır. Komut dosyasını çok daha hızlı bir döngü ile daha sonra aşağıdaki komut dosyasında, hiçbir ek (fark edilir) yük olmadan tek bir dizin düzeyinde yaklaşık 500 öğeyle test ettim.
Senaryo ve nasıl kullanılır
#!/usr/bin/env python3
import os
import sys
import time
# --- set loop time below (or leave it as it is)
loop = 5
# ---
# don't change anything below
target = sys.argv[1]
sources = sys.argv[2:]
while True:
currlinks = os.listdir(target)
compare = []
for dr in sources:
for f in os.listdir(dr):
compare.append(f)
if not f in currlinks:
# create link
os.symlink(dr+"/"+f, target+"/"+f)
# clean up possible broken links
for link in currlinks:
if not link in compare:
os.remove(target+"/"+link)
# loop time
time.sleep(loop)
- Komut dosyasını boş bir dosyaya kopyalayın,
library_view.py
İlk bağımsız değişken olarak kaynak dizinlerdeki birleşik dizinleri sonraki bağımsız değişkenler olarak görüntülemek için komut dosyasını hedeflenen dizinde sınayın, örneğin:
python3 /path/to/library_view.py /path/to/virtual_library /path/to/source1 /path/to/source2
Bu komut, source1
ve source2
içindeki klasörlerin içeriğini gösterir virtual_library
.
Her şey yolunda giderse, uygulamayı başlangıç uygulamalarına ekleyin: Çizgi> Başlangıç Uygulamaları> Ekle. Komutu ekleyin:
python3 /path/to/library_view.py /path/to/virtual_library /path/to/source1 /path/to/source2
Not
Belirtildiği gibi, isterseniz ikiden fazla soure dizini ekleyebilirsiniz.
2. Manuel sürüm
Herhangi bir nedenle arka plan komut dosyası kullanmamayı tercih ederseniz, aşağıdaki komut dosyasını kullanarak bir kısayol tuşu altında tam olarak aynı komutla kütüphane klasörünü manuel olarak güncelleyebilir (senkronize edebilirsiniz):
#!/usr/bin/env python3
import os
import sys
target = sys.argv[1]
sources = sys.argv[2:]
currlinks = os.listdir(target)
compare = []
for dr in sources:
for f in os.listdir(dr):
compare.append(f)
if not f in currlinks:
# create link
os.symlink(dr+"/"+f, target+"/"+f)
# clean up possible broken links
for link in currlinks:
if not link in compare:
os.remove(target+"/"+link)
Seçin: Sistem Ayarları> "Klavye"> "Kısayollar"> "Özel Kısayollar". "+" İşaretini tıklayın ve yo komutunu istediğiniz bir tuş kombinasyonuna ekleyin:
python3 /path/to/library_view.py /path/to/virtual_library /path/to/source1 /path/to/source2
sudo mount --bind olddir newdir
ama bu muhtemelen tam olarak ne sonra değil ...