如何在 Nautilus 中隐藏文件和文件夹?

如何在 Nautilus 中隐藏文件和文件夹?

我想使用 Nautilus 隐藏根目录 ( ) 中的大多数文件夹。我想显示的/文件夹可能只有和。//home/tmp

除了隐藏文件夹另外,我还想隐藏两个文件:initrd.imginitrd.img.old

我觉得这样的设置很适合新手,而且看起来也更巧妙。我该如何隐藏这些文件夹和文件?

答案1

在 Ubuntu 12.04/12.10 上的 Nautilus 3.4.2 下进行了测试(但几乎适用于所有场景)

打开gnome-terminalCtrl++ AltT

类型ls -1 /

复制您想要隐藏的文件夹的名称。

Alt+ F2,然后输入gedit

粘贴所有您想要隐藏的名称,如下所示:

隐

图片摘自在 Ubuntu 中隐藏文件夹的另一种方法经过梅林

将文件(Ctrl+ )保存在名称为(没有星号,如上图所示)的S目录中。/.hidden

刷新页面,它们就消失了。

隐藏文件夹

图片来源如何隐藏文件和文件夹 - EuroBytes

如果您希望稍后取消隐藏它们...

要取消隐藏文件夹,您可以:

  • 从文件中删除这些名字.hidden或者
  • 只需按Ctrl+H即可查看所有隐藏文件和文件夹。

参考:

答案2

我怀疑您是否可以轻松实现这一点,在 unix 模型中,这要么全部,要么全部,并且没有“查看目录内容”的权限。一旦您拥有足够的权限来读取目录,您就可以读取所有内容(即文件夹/文件列表)

chmod 或 / 可以用于隐藏所有目录,但我不建议在没有先在虚拟机上进行测试并完全理解自己所做的事情的情况下这样做。

使用自定义内核模块,您可以隐藏文件夹,但这相当复杂且容易出错。

答案3

这是@blade19899 答案的扩展

动机

将文件名放入.hidden文件中会隐藏它们,但 nautilus 只会检查精确匹配。在某些情况下,我们希望按模式隐藏文件,而不是按精确名称隐藏文件 — 例如,我不喜欢看到 latex aux 文件。

解决方法

我的解决方法是将.hidden分成两部分,每部分之间用至少 5 个等号隔开(即=====)。模式应放在此分隔符之前。然后,脚本(见下文)通过在分隔符后添加精确的文件名来完成文件。

实际上,您需要手动运行此脚本以使用新匹配项更新文件。将此文件添加为 FilemanagerActions 可能是一个好主意。

脚本

不带参数运行:

import glob
from pathspec import PathSpec


def main():
    patterns = find_patterns('.hidden')
    files = ls()
    matches = find_matches(patterns, files)
    update_dothidden(patterns, matches)


def find_patterns(filepath):
    patterns = []
    with open(filepath) as f:
        lines = f.readlines()
    for line in lines:
        if line[0:5] == '=====':
            break
        patterns.append(line)
    return patterns


def ls():
    return glob.iglob('**/**', recursive=True)


def find_matches(patterns, files):
    path_spec = PathSpec.from_lines('gitwildmatch', patterns)
    return filter(path_spec.match_file, files)


def update_dothidden(patterns, matches):
    with open('.hidden', 'w') as f:
        for pattern in patterns:
            f.write(pattern)
        f.write('======================\n\n')
        for match in matches:
            f.write(match + '\n')
        f.write("\n# For usage, see https://github.com/m2-farzan/dothidden-patterns")


if __name__ == '__main__':
    main()

脚本的最新版本:https://github.com/m2-farzan/dothidden-patterns/blob/main/refresh_dothidden.py

例子

将其放入.hidden文件中:

*.aux
*.bbl
*.blg
*.log
*.synctex.gz

执行:

~/my_scripts/refresh_dothidden.py

更新后的.hidden文件:

*.aux
*.bbl
*.blg
*.log
*.synctex.gz
======================

dstar_main.aux
main.aux
main.bbl
main.blg
main.log
main.synctex.gz
mrpp_central.aux
tikzhead.aux

相关内容