Wie ändere ich mit Automator die Darstellung leerer Ordner im Finder?

Wie ändere ich mit Automator die Darstellung leerer Ordner im Finder?

Ich versuche, mit Apple Automator leere Ordner in einer Hierarchie zu kennzeichnen. Grundsätzlich beginne ich ein Projekt mit einer Hierarchie leerer Ordner und fülle sie während der Arbeit. Ich möchte einen Workflow, der alle leeren Ordner (grau) kennzeichnet, die keine Dateien enthalten und deren untergeordnete Ordner ebenfalls keine Dateien enthalten.

Mit anderen Worten, wenn ich das leere Projekt erstelle, sollten alle Ordner grau sein, da es nirgendwo „Dateien“ gibt, sondern nur leere Ordner. Sobald ich jedoch eine Datei irgendwo platziere, werden ihr übergeordnetes Element und alle übergeordneten Elemente nicht mehr grau markiert.

Ich dachte, ich hätte gefunden, was ich brauchte beiWie ändere ich die Darstellung leerer Ordner im Finder?Es werden jedoch leere Ordner gekennzeichnet. In meinem Projekt wären immer nur die letzten Nachkommen grau, da alle übergeordneten Ordner Ordner enthalten und daher nicht leer sind.

Hier ist der Code, den ich in einem /bin/bash-Shell-Skript in Automator ausführe:

find "$@" -type d -empty

Und dann übergebe ich es an „Finder-Elemente beschriften“, um die Ergebnisse grau anzuzeigen.

Dies ist das Ergebnis, das ich beim Ausführen in einem Testordner erhalte:

  • Testordner (nicht grau)
    • Ordner Eins (grau)
    • Ordner Zwei (nicht grau)
      • Ordner A (grau)
    • Ordner Drei (nicht grau)
      • Test.txt
    • Ordner Vier (nicht grau)
      • Ordner A (nicht grau)
        • Test.txt

Und hier ist das Ergebnis, nach dem ich suche:

  • Testordner (nicht grau)
    • Ordner Eins (grau)
    • Ordner Zwei (grau)
      • Ordner A (grau)
    • Ordner Drei (nicht grau)
      • Test.txt
    • Ordner Vier (nicht grau)
      • Ordner A (nicht grau)
        • Test.txt

Jede Hilfe wird SEHR geschätzt!

Oh, außerdem glaube ich, dass ich den Workflow von Hazel aus ausführen kann. Wenn Sie eine bessere Möglichkeit kennen, ihn gelegentlich automatisch ausführen zu lassen, würde ich das auch gerne wissen.

Danke.

Bearbeiten: Habe gerade festgestellt, dass die .ds_store-Dateien (nehme ich an) dazu führen, dass Ordner auch nicht leer erscheinen, wenn ich beispielsweise die letzte Datei in einem Ordner lösche.

Antwort1

Ich habe es in einigen Fällen versucht und es scheint, als ob es wie gewünscht funktioniert:

Shell-Skript, usr/bin/perl, Eingabe übergeben as arguments.

Automator-Dienst

use File::Find;

find({ wanted => \&find_files, no_chdir => 1 }, @ARGV);

sub find_files
{
    if (-f $_)
    {
        ($file) = $_ =~ /.*\/(.*)$/;
        push (@all_files, $_) if ($file ne ".DS_Store");
    }
    else
    {
        push (@all_folders, $_);
    }
}

sub osascript($) { system 'osascript', map { ('-e', $_) } split(/\r/, $_[0]); } 

foreach(@all_files)
{
    @paths = split(/\//, $_);
    for $i (0..$#paths-1)
    {
        if ($i == 0)
        {
            $x = "$paths[$i]";
        }
        else
        {
            $x = "$last[$i-1]/$paths[$i]";
        }
        push(@last, $x);
        $temp{$x} ++;
    }
    @last = ();
 }

@not_gray_folders = keys %temp;
foreach(@all_folders)
{
    $folder = $_; $flag = 0;
    foreach(@not_gray_folders)
    {
        if ($folder eq $_)
        {
            $flag = 1;
        }
    }
    if (!$flag)
    {
        $label = 7;
    }
    else
    {
        $label = 0;
    }
    &osascript ("tell application \"Finder\" to set label index of alias POSIX file \"$folder\" to $label");
}

verwandte Informationen