- 我在 nautilus 中打开一个包含大约 100 个文件的目录
- 我通过查看文件预览选择了 N 个(可能是 10 个)文件。
- 现在我想点击快捷方式并调用我的自定义脚本。
- 我的自定义脚本接收文件名并执行我想要的操作。
如何在 gnome/ubuntu/nautilus 中注册一个自定义操作来接收在 nautilus 中选择的文件名?
Nautilus 上下文菜单中的新上下文条目
如果您在 ~/.local/share/nautilus/scripts 中编写脚本,那么您会在上下文菜单中获得一个新条目。如何通过快捷方式调用此脚本?
背景
版本
我使用 Ubuntu 16.04
答案1
对选定的文件运行操作
下面的答案首先会从字面上回答您的问题;
如何调用脚本并使用当前选定的文件作为参数
[1]
。
然而,链接问题中接受的答案使用鹦鹉螺脚本,它将文件作为来自 nautilus 的参数。这不起作用,仅当单击鼠标右键时在nautilus。[2]
因此,在 中,我将链接问题中的脚本的功能添加到了答案中,因此您只需[2]
从快捷方式运行其中之一(在 中)。
[1]
对于 16.04 及更高版本*,以选定的文件作为参数运行脚本
您可以简单地使用下面的简短脚本。它将“读取”当前选定的文件并以文件作为参数运行您的脚本。
#!/usr/bin/env python3
import subprocess
import pyperclip
import time
time.sleep(1)
subprocess.call(["xdotool", "key", "Control_L+c"])
for item in pyperclip.paste().splitlines():
subprocess.Popen(["/path/to/script", item])
使用
安装
python3-pyperclip
并xdotool
:sudo apt install python3-pyperclip xdotool
将上面的脚本复制到一个空文件中,保存为
run_withselected.py
脚本中的Replace"/path/to/script"
通过要运行的脚本的实际路径。使用绝对路径,用引号引起来。
将其添加到快捷键:选择:系统设置 > “键盘” > “快捷键” > “自定义快捷键”。单击“+”并添加命令:
python3 /path/to/run_withselected.py
[2]
然而
请注意,来自其他答案的链接 nautilus 脚本不会像这样运行,因为它以另一种方式检索其参数直接从 nautilus.因此我合并链接问题中的脚本的功能与上面的脚本的功能相同。
那么您不再需要其他答案中的其他脚本。
A. 通过更改名称来指定文件
选择文件
按快捷键标记(切换)文件
#!/usr/bin/env python3
import subprocess
import pyperclip
import shutil
import os
import time
time.sleep(1)
def npath(p, f):
return os.path.join(p, f)
subprocess.call(["xdotool", "key", "Control_L+c"])
for item in pyperclip.paste().splitlines():
data = item.rsplit("/", 1); path = data[0]; name = data[1]
newname = name[2:] if name.startswith("*0") else "*0"+name
shutil.move(npath(path, name), npath(path, newname))
B. 通过在“收藏夹”目录中创建链接来指定文件
选择文件
按快捷键在“我的收藏夹”中创建(切换)链接
#!/usr/bin/env python3
import subprocess
import pyperclip
import shutil
import os
import time
fav = os.path.join(os.environ["HOME"], "My_Favorites")
try:
os.mkdir(fav)
except FileExistsError:
pass
time.sleep(1)
subprocess.call(["xdotool", "key", "Control_L+c"])
for item in pyperclip.paste().splitlines():
name = item.rsplit("/", 1)[-1]
link = os.path.join(fav, name)
try:
os.symlink(item, link)
except FileExistsError:
os.remove(link)
使用(任一个)
脚本
python3-pyperclip
需要xdotool
:sudo apt install python3-pyperclip xdotool
将上述脚本复制到一个空文件中,另存为
toggle_selected.py
添加快捷键:选择:系统设置 > “键盘” > “快捷键” > “自定义快捷键”,点击“+”,添加命令:
python3 /path/to/toggle_selected.py
解释
- 脚本使用
xdotool
虚拟按下Ctrl+C 随后,脚本(内部)创建选定文件的列表:
pyperclip.paste().splitlines()
这些文件随后被用作重命名文件的参数:
for item in pyperclip.paste().splitlines(): data = item.rsplit("/", 1); path = data[0]; name = data[1] newname = name[2:] if name.startswith("*0") else "*0"+name shutil.move(npath(path, name), npath(path, newname))
或者创建一个符号链接:
for item in pyperclip.paste().splitlines(): name = item.rsplit("/", 1)[-1] try: os.symlink(item, os.path.join(fav, name)) except FileExistsError: os.remove(link)
最后
time.sleep(1)
要确保“真实”按键不会干扰模拟按键xdotool
。笔记
- 在链接的答案中,第二脚本创建了链接,但并未切换。我让答案“B”也切换符号链接的存在。
- 如果是针对已发布的应用程序,我会将 A 和 B 合并为一个脚本,并在设置文件中决定要采取什么操作。我可能会稍后添加。
*14.04
...需要不同的步骤来安装 pyperclip:
sudo apt-get install python3-pip xdotool
sudo pip3 install pyperclip