Bitten Sie Automator, Ordner zu analysieren und alle Dateinamen ohne ihre Erweiterung aufzulisten

1

Automator Newbee Frage hier. Ich habe mich umgesehen und kann einfach nicht finden, was ich brauche (noch vollständig verstehen, wie Dinge funktionieren :-().

Ich möchte, dass Automator einen bestimmten Ordner analysiert, der in Dutzende von Ordnern unterteilt ist. Jeder dieser Unterordner enthält eine unterschiedliche Anzahl von Dateien mit der jeweiligen Dateierweiterung (.mov, .mp4, .wmv und andere). Letztendlich würde der automatisierte Prozess die Liste aller Dateien abzüglich ihres Dateinamens in eine Textdatei ausgeben. Insgesamt sollten zwischen 50 und 200 Namen vorhanden sein.

Beispielquellen:
RootFolder & gt; Unterordner1 & gt; File1.mov, File2.mp4
RootFolder & gt; Unterordner2 & gt; File3.wmv, File4.mov, File5.mp4

Textdatei-Inhalt ausgeben:
Datei1
Datei2
Datei3 (...)
Diese Textdatei kann sich auf der RootFolder-Ebene oder auf dem Desktop befinden.

Vielen Dank im Voraus für jede Hilfe, die Sie leisten können!

Alain

user71960
quelle

Antworten:

1

Automator- und Scripting-Ansatz

Die gewünschten Automator-Aktionen sind:

  • Nach Finder Items fragen, mit Art einstellen Ordner .
  • Führen Sie Shell Script mit aus Schale einstellen / usr / bin / perl .
  • Neue Textdatei

Kopieren Sie das Shell-Skript und fügen Sie es ein:

use strict;
use warnings;
use File::Basename;
use File::Find;

find(sub {
    return if (-d $File::Find::name);
    my($filename,undef,undef) = fileparse($_,qr/\.[^.]*/);
    print $filename."\n";
}, shift);

Automator list files

Du kannst den ... benutzen Neues TextEdit-Dokument Aktion, wenn die resultierende Dateiliste in TextEdit angezeigt, aber nicht auf der Festplatte gespeichert werden soll.

enter image description here

Weitere Informationen zur Verwendung von Automator finden Sie unter Apple Mac-Grundlagen: Automator .

Graham Miln
quelle
Vielen Dank Graham - sehr großzügig von dir. Leider funktioniert der Script-Ansatz bei mir nicht. Soll irgendwo ein Ausgabedateiname definiert werden? Nur zur Bestätigung: Der Script-Ansatz ist insgesamt eine Alternative, kein Script, das von Automator ausgeführt wird, richtig?
user71960
Ja, das Skript ist eine Alternative. Die Ausgabe wird gedruckt, kann jedoch in eine Datei umgeleitet werden, sobald nachgewiesen wurde, dass sie funktioniert. Bitte können Sie anfügen, welchen Fehler Sie sehen und was Sie versucht haben.
Graham Miln
Sichere Sache. Ich habe alles auf den Desktop gebracht. Wenn ich den von Ihnen beschriebenen "Full Path" -Ansatz verwende, erhalte ich weder eine Fehlermeldung noch eine Ausgabe auf dem Bildschirm. Im Terminal gebe ich Folgendes ein: perl / Users / aduroche / Desktop / / Users / aduroche / Desktop / TheFolder / Now. Unter Verwendung der folgenden Syntax (Ausführen des Befehls von der Desktop-Ebene aus) wurde ein Fehler ausgegeben: Desktop aduroche $ ./ListFolderContentInTextFile.txt TheFolder / ./ListFolderContentInTextFile.txt: Zeile 1: Syntaxfehler in der Nähe des unerwarteten Tokens "sub", shift); $ filename. "\ N"; def) = fileparse ($ _, qr / \. [ ^.] * /); v perl Hoffe das macht Sinn.
user71960
Ich habe die Antwort aktualisiert, um einen Automator- und einen Shell-Skriptansatz zu kombinieren. Sie können den Workflow jetzt erweitern, um zu vermeiden, dass jedes Mal ein Ordner ausgewählt wird, oder der Ausgabe weitere Aktionen zur weiteren Verarbeitung übergeben.
Graham Miln
0

Sie können auch eine Aktion "Shell-Skript ausführen" verwenden:

Oder führen Sie einfach einen Befehl wie diesen in Terminal aus:

find ~/path/to/dir -type f|sed 's|.*/||;s|\.[^.]*$||'>~/Desktop/files.txt
Lri
quelle
Auch gut - danke. Eine Einschränkung: Wenn Sie den Vorgang wiederholen, wird die neue Liste mit der älteren verknüpft (hinzugefügt).
user71960