脚本解决方案
1.自动更新的库视图
使用下面的背景脚本,您可以设置目录,以虚拟方式显示任意数量其他文件夹的组合内容。
文件夹的内容(现有符号链接)与(组合的)源动态同步。
怎么运行的
该脚本会定期列出源文件夹的内容以及“库” -view的目标文件夹。
- 如果任何源文件夹中有项目,但库中不存在,则会在库中创建符号链接。
- 如果库中有项目,而任何源文件夹中都不存在(实际上是断开的链接),则将项目从库中删除。
比较列表非常轻巧(以编程方式)并且资源很少。我在下面的脚本中以更快的循环对脚本进行了测试,在单个目录级别中包含了大约500个项目,并且没有任何额外的(值得注意的)负载。
脚本以及如何使用
#!/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)
- 将脚本复制到一个空文件中,另存为
library_view.py
用目标目录测试脚本,以第一个参数查看源目录中的组合目录,以下一个参数查看源目录,例如:
python3 /path/to/library_view.py /path/to/virtual_library /path/to/source1 /path/to/source2
此命令将显示source1
和source2
中的文件夹的内容virtual_library
。
如果一切正常,请将其添加到启动应用程序:Dash>启动应用程序>添加。添加命令:
python3 /path/to/library_view.py /path/to/virtual_library /path/to/source1 /path/to/source2
注意
如前所述,您可以根据需要添加两个以上的纯目录。
2.手册版本
如果由于某种原因而不想使用后台脚本,则可以使用以下脚本,在快捷键下使用完全相同的命令来手动更新(同步)库文件夹:
#!/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)
选择:系统设置>“键盘”>“快捷方式”>“自定义快捷方式”。单击“ +”并添加命令yo您选择的按键组合:
python3 /path/to/library_view.py /path/to/virtual_library /path/to/source1 /path/to/source2
sudo mount --bind olddir newdir
但是,这可能不完全是您想要的...