Wie kann man ein Verzeichnis (in Thunar und Nautilus) verstecken, ohne einen Punkt in den Namen zu setzen?

14

Normalerweise speichern Linux-Programme die Benutzereinstellungen in ~ /.*-Verzeichnissen. Leider befolgen einige Entwickler (von einigen Anwendungen, die ich benötige) diese Regel nicht und beginnen die Namen ihrer Einstellungsspeicherordner nicht mit einem Punkt. Dies führt dazu, dass nie benutzte Ordner unübersichtlich werden (vielleicht nicht das richtige Wort, da es nicht viele gibt, aber sie ärgern trotzdem). Sie können nicht umbenannt werden, da die Anwendungen sie in diesem Fall nicht finden (und sie dann erneut erstellen).

Gibt es eine Möglichkeit, einen Ordner ohne Punkt zu verbergen, der mit seinem Namen beginnt, bevor er in gängigen Dateisystem-Browsern angezeigt wird?

Ivan
quelle

Antworten:

18

Nautilus (Update: Dies sollte jetzt auch mit Thunar funktionieren) blendet alle Dateien oder Ordner aus, die in der Datei .hiddenim selben Verzeichnis aufgeführt sind.

Es gibt zwei Möglichkeiten, einen Ordner in Nautilus auszublenden:

Nautilus-Schrift

  1. Speichern Sie den folgenden Code in einer neuen Datei in Ihrem privaten Ordner. Nennen Sie es 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. Führen Sie den folgenden Befehl aus, um das Skript zu installieren:

    cp Hide ~/.local/share/nautilus/scripts/ && chmod u+x ~/.local/share/nautilus/scripts/Hide
    
  3. Wählen Sie in Nautilus eine oder mehrere Dateien / Ordner aus und klicken Sie mit der rechten Maustaste. Wählen Sie im Menü " Skripte" die Option " Ausblenden" :

    Bildbeschreibung hier eingeben

    Laden Sie den aktuellen Speicherort neu ( F5) und die ausgewählten Dateien / Ordner werden ausgeblendet.

Befehlszeile

Angenommen, Sie möchten einen Ordner mit dem Namen "Rick Astley's Greatest Hits" ausblenden, führen Sie einfach den folgenden Befehl aus:

echo "Rick Astley's Greatest Hits" >> .hidden
Jesaja
quelle
2
Genau eine Art Antwort, die ich haben wollte. Funktioniert aber leider nicht bei Thunar.
Ivan
@Ivan, Hoffentlich werden sie es irgendwann hinzufügen, siehe den Fehlerbericht, auf den ich in meiner Antwort verlinkt habe.
Jesaja,
Warum doppelte Anführungszeichen "ObnoxiousFolder"?
Karthick87
Zu Ihrer Information, der Fehlerbericht wurde als WONTFIX geschlossen (ziemlich grob IMO, da es bereits einen Patch dafür gab und der Projektbetreuer im Grunde genommen sagte "Es ist mir egal"). Wir werden eine andere Lösung brauchen ...
Waldyrious
Aktuelle Versionen von Thunar unterstützen dies, da sie GIO verwenden, um versteckte Verzeichnisse zu ermitteln, und GIO implementiert jetzt die Unterstützung für die .hiddenDatei.
Brian Campbell
1

Öffne synaptic und suche nach "nautilus-hide", installiere es. Abmelden und einloggen. Klicken Sie nun mit der rechten Maustaste auf eine Datei oder einen Ordner. Im Kontextmenü wird nun die Option "Ausblenden" angezeigt.

Der Name wird nicht geändert, aber der Ordner wird ausgeblendet.

Neugieriger Lehrling
quelle
0

Ich habe Alvins gutes Skript so geändert , dass es (hoffentlich) pythonischer ist (und möglicherweise schneller, wenn viele Dateien hinzugefügt werden, da .hiddenes nur einmal geöffnet wird):

#!/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()]))
Tobias Kienzler
quelle