如何隐藏(在Thunar和Nautilus中)目录而不在其名称中加点?


14

通常,Linux程序将用户的设置存储在〜/.*目录中。但是不幸的是,某些开发人员(在我需要的某些应用程序中)不遵循此规则,并且不以点开头来设置存储文件夹的名称。这会导致从未使用过的文件夹杂乱无章(主目录可能不正确,因为它的数量并不多,但无论如何它们都会烦人)。重命名它们不是一种选择,因为在这种情况下应用程序将找不到它们(并将再次创建它们)。

有没有一种方法可以隐藏在普通文件系统浏览器中不显示名称开头没有点的文件夹(我实际上使用XFCE的Thunar以及Midnight Commander和Krusader,但也不想介意Nautilus)。

Answers:


18

鹦鹉螺 (更新:现在也应该与Thunar一起使用)将隐藏.hidden位于同一目录中的文件中列出的任何文件或文件夹。

有两种方法可以在Nautilus中隐藏文件夹:

鹦鹉螺脚本

  1. 将以下代码保存到主文件夹中的新文件中。命名它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"))
  2. 运行以下命令以安装脚本:

    cp Hide ~/.local/share/nautilus/scripts/ && chmod u+x ~/.local/share/nautilus/scripts/Hide
    
  3. 在Nautilus中,选择一个或多个文件/文件夹,然后单击鼠标右键。从“ 脚本”菜单中选择“ 隐藏 ” :

    在此处输入图片说明

    重新加载当前位置(F5),所选文件/文件夹将被隐藏。

命令行

假设您要隐藏一个名为“ Rick Astley's Greatest Hits”的文件夹,只需运行以下命令:

echo "Rick Astley's Greatest Hits" >> .hidden

2
我想得到的正是一种答案。但是,不幸的是,这不适用于图纳尔。
伊万

@Ivan,希望他们最终会添加它,并在答案中查看我链接到的错误报告。
以赛亚

为什么要双引号“ ObnoxiousFolder”?
karthick87

仅供参考,该错误报告以WONTFIX(相当粗鲁的IMO,因为已经有一个补丁,并且项目维护人员基本上说“我不在乎”)关闭了。我们将需要另一种解决方案...
waldyrious

Thunar的最新版本支持此功能,因为他们使用GIO确定隐藏目录,并且GIO现在实现了对该.hidden文件的支持。
布莱恩·坎贝尔

1

打开突触并搜索“ nautilus-hide”将其安装。注销并登录。现在,右键单击任何文件或文件夹。现在,您将在上下文菜单中看到“隐藏”选项。

它不会修改名称,但会隐藏文件夹。


0

我将Alvin的好脚本修改为(希望)更加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()]))
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.