![如何隐藏(在 Thunar 和 Nautilus 中)目录而不在目录名称中添加点?](https://linux22.com/image/956917/%E5%A6%82%E4%BD%95%E9%9A%90%E8%97%8F%EF%BC%88%E5%9C%A8%20Thunar%20%E5%92%8C%20Nautilus%20%E4%B8%AD%EF%BC%89%E7%9B%AE%E5%BD%95%E8%80%8C%E4%B8%8D%E5%9C%A8%E7%9B%AE%E5%BD%95%E5%90%8D%E7%A7%B0%E4%B8%AD%E6%B7%BB%E5%8A%A0%E7%82%B9%EF%BC%9F.png)
通常,Linux 程序将用户的设置存储在 ~/.* 目录中。但不幸的是,一些开发人员(我需要的一些应用程序的开发人员)不遵循此规则,并且不以点开头设置存储文件夹的名称。这会导致用户从未使用过的文件夹杂乱无章(也许这个词不太恰当,因为这些文件夹并不多,但它们无论如何都很烦人)。重命名它们不是一种选择,因为在这种情况下应用程序找不到它们(并将再次创建它们)。
有没有办法隐藏名称中没有点开头的文件夹,使其不显示在常见的文件系统浏览器中(我实际上使用 XFCE 的 Thunar,以及 Midnight Commander 和 Krusader,但也不介意了解 Nautilus)。
答案1
鹦鹉螺(更新:现在它也适用于 Thunar).hidden
将隐藏位于同一目录中的文件中列出的任何文件或文件夹。
有两种方法可以在 Nautilus 中隐藏文件夹:
Nautilus 脚本
将以下代码保存在主文件夹中的新文件中。将其命名为
Hide
。#!/usr/bin/env python import commands from os.path import join files = commands.getoutput("echo $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS") cwd = commands.getoutput("echo $NAUTILUS_SCRIPT_CURRENT_URI") cwd = cwd[7:] for f in files.split(" /"): f = f.split("/")[-1] commands.getoutput("echo "+f+" >> "+join(cwd, ".hidden"))
运行以下命令来安装脚本:
cp Hide ~/.local/share/nautilus/scripts/ && chmod u+x ~/.local/share/nautilus/scripts/Hide
在 Nautilus 中,选择一个或多个文件/文件夹并右键单击。选择隐藏来自脚本菜单:
重新加载当前位置(F5),选定的文件/文件夹将被隐藏。
命令行
假设您想隐藏一个名为“Rick Astley's Greatest Hits”的文件夹,只需运行以下命令:
echo "Rick Astley's Greatest Hits" >> .hidden
答案2
打开 synaptic 并搜索“nautilus-hide”安装它。注销并登录。现在右键单击任何文件或文件夹。现在您将在上下文菜单中看到“隐藏”选项。
它不会修改名称但会隐藏文件夹。
答案3
我修改了艾尔文的好剧本(希望)更加 Pythonic(如果添加许多文件,则可能会更快,因为.hidden
只打开一次):
#!/usr/bin/env python
import os
files = os.environ["NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"].split()
# According to https://help.ubuntu.com/community/NautilusScriptsHowto
# the list is newline-delimited, which is split()'s default separator
# No need for NAUTILUS_SCRIPT_CURRENT_URI
cwd = os.path.dirname(files[0])
# Assuming all selected files are in the same path, I cannot imagine why not
# Instead of relying on "echo ... >> ..." use Python's IO:
with open(os.path.join(cwd, ".hidden"), "a") as hidden:
hidden.write("\n".join(
[os.path.basename(f) for f in files.split()]))