web-dev-qa-db-ja.com

名前にドットを入れずにディレクトリを非表示にする方法(ThunarとNautilusで)

通常、Linuxプログラムはユーザーの設定を〜/.*ディレクトリに保存します。しかし、残念なことに、一部の開発者(私が必要とする一部のアプリケーション)は、この規則に従わず、設定の保存フォルダー名をドットで始めません。これにより、ユーザーが決して使用しないフォルダーがホームディレクトリに散らかります(多くの場合、正しいWordではないかもしれませんが、とにかく面倒です)。この場合、アプリケーションはそれらの名前を見つけられない(また、それらを再度作成する)ため、名前の変更はオプションではありません。

一般的なファイルシステムブラウザーで表示されることから、名前の先頭にドットが付いていないフォルダーを非表示にする方法はありますか(XFCEのThunarをMidnight CommanderおよびKrusaderと一緒に実際に使用しますが、Nautilusについても気にしません)。

14
Ivan

Nautilus (更新:これはThunarでも動作するはずです)同じディレクトリにあるファイル.hiddenにリストされているファイルまたはフォルダーを非表示にします。

Nautilusでフォルダーを非表示にする方法は2つあります。

ノーチラススクリプト

  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で、1つまたは複数のファイル/フォルダーを選択して右クリックします。 ScriptsメニューからHideを選択します。

    enter image description here

    現在の場所をリロードします( F5 )と選択したファイル/フォルダーが非表示になります。

コマンドライン

「Rick Astley's Greatest Hits」というフォルダを非表示にしたい場合、次のコマンドを実行するだけです。

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

シナプスを開き、「nautilus-hide」を検索してインストールします。ログアウトとログイン。次に、任意のファイルまたはフォルダーを右クリックします。コンテキストメニューに[非表示]オプションが表示されます。

名前は変更されませんが、フォルダーは非表示になります。

1

Alvinの優れたスクリプト を(できれば)よりPython的になるように修正しました(.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()]))
0
Tobias Kienzler