Dan*_*DRH 10 sync dropbox directory symbolic-link
我想让 Ubuntu 的默认音乐文件夹/home/$USER/Music几乎像 Windows 中的库一样。本质上,它将是一个包含其他文件夹内容的虚拟文件夹。
我的理由是 Rhythm Box 只会观看一个文件夹中的新音乐。我所有的音乐都存放在两个文件夹中/home/$USER/Dropbox/Music和/home/$USER/Dropbox/New Music.
这对于在 Ubuntu 的默认文件夹(文档、图片等)中显示其他 Dropbox 文件夹的内容也很有用。
我确实搜索并试图自己找到答案,但无济于事。我相信有办法做到这一点;我只是想念它。
提前致谢。
使用下面的后台脚本,您可以设置一个目录,虚拟显示任意数量的其他文件夹的组合内容。
文件夹的内容(现有的符号链接)与(组合的)源动态同步。
该脚本会定期列出源文件夹的内容以及“库”视图的目标文件夹。
比较列表的重量极轻(以编程方式)并且资源很少。我在下面的脚本中使用更快的循环测试了脚本,在单个目录级别中有大约 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)
Run Code Online (Sandbox Code Playgroud)
library_view.py使用目标目录测试运行脚本,以查看作为第一个参数的源目录中的组合目录作为下一个参数,例如:
python3 /path/to/library_view.py /path/to/virtual_library /path/to/source1 /path/to/source2
Run Code Online (Sandbox Code Playgroud)
此命令将显示文件夹的内容source1,并source2在virtual_library。
如果一切正常,请将其添加到启动应用程序:Dash > Startup Applications > Add。添加命令:
python3 /path/to/library_view.py /path/to/virtual_library /path/to/source1 /path/to/source2
Run Code Online (Sandbox Code Playgroud)如前所述,如果您愿意,您可以添加两个以上的源目录。
如果您出于某种原因不想使用后台脚本,您可以手动更新(同步)库文件夹,在快捷键下使用完全相同的命令,使用以下脚本:
python3 /path/to/library_view.py /path/to/virtual_library /path/to/source1 /path/to/source2
Run Code Online (Sandbox Code Playgroud)
选择:系统设置>“键盘”>“快捷方式”>“自定义快捷方式”。单击“+”并将命令添加到您选择的组合键中:
python3 /path/to/library_view.py /path/to/virtual_library /path/to/source1 /path/to/source2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3437 次 |
| 最近记录: |