[GastForen Betriebsysteme und Dienste Apple (Hard- und Software) Kleines AppleScript oder Unix-ShellScript gesucht

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Kleines AppleScript oder Unix-ShellScript gesucht

Ralf Hobirk
Beiträge gesamt: 5961

8. Feb 2019, 19:14
Beitrag # 1 von 12
Bewertung:
(6791 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

ich stehe vor einer – für Scripter vermutlich leichten – Aufgabe, die mir durchaus ein paar Bier Wert ist. ;-)

Ich habe alphanumerische Dateinamen, bei denen von den ersten 6 Zeichen immer das 6. Zeichen gelöscht werden muss, z. B.

Code
HDBB1A_de.txt 
HDBD2A_de.txt
HDBF1D_de.txt
HDBG15_de.txt

müssen gekürzt werden auf:

Code
HDBB1_de.txt 
HDBD2_de.txt
HDBF1_de.txt
HDBG1_de.txt

Dies sollte sich in AppleScript oder einem ShellScript realisieren lassen, da ich solche Scripts in meinen Hazel-Workflow einbinden kann. Zumindest bei Unix-ShellScript weiß ich, dass es mit Regular Expressions umgehen kann. Aber ich kann das nicht scripten. :-(

In InDesign GREP würde ich das so machen:

Code
Suche: (\w\w\w\w\w)(\w) 
Ersetze: $1

Was mir aber hier nicht hilft, da sich das Ganze weder in InDesign abspielt noch damit zu tun hat.

Den kompletten Workflow von der Dateierstellung bis zum automatisierten FTP-Upload auf einen Server hier zu posten, würde jetzt den Rahmen sprengen. Mir fehlt nur dieser eine Schritt. ;-)
X

Kleines AppleScript oder Unix-ShellScript gesucht

Markus76
Beiträge gesamt: 340

12. Feb 2019, 15:59
Beitrag # 2 von 12
Beitrag ID: #568890
Bewertung:
(6654 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Ralf

Probier doch mal das hier:
Code
for f in *; do 
mv $f $(echo $f | sed 's/.//6')
done


Funktioniert aber nicht mit Leerzeichen im Dateinamen. Das muss man dann noch irgendwie zusammenfassen den String wenn das der Fall sein sollte.
Markus


als Antwort auf: [#568859]

Kleines AppleScript oder Unix-ShellScript gesucht

Ralf Hobirk
Beiträge gesamt: 5961

12. Feb 2019, 16:13
Beitrag # 3 von 12
Beitrag ID: #568891
Bewertung:
(6644 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Markus,

erstmal vielen Dank. Ich werde das später mal testen.

Die Dateinamen enthalten keine Leer- oder Sonderzeichen – in dieser Beziehung bin ich konservativ. Zumindest wenn es um Dateien geht, die automatisch weiterverarbeitet und auf irgendwelche Server geladen werden müssen.


als Antwort auf: [#568890]

Kleines AppleScript oder Unix-ShellScript gesucht

Ralf Hobirk
Beiträge gesamt: 5961

12. Feb 2019, 16:33
Beitrag # 4 von 12
Beitrag ID: #568892
Bewertung:
(6629 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Markus,

es hat leider nicht geklappt. Aus:

Zitat HDBB1A_ab.txt
HDBB2A_ab.txt
HDBB3A_ab.txt
HDBD1A_ab.txt
HDBD2A_ab.txt
HDBF1A_ab.txt
HDBG1A_ab.txt


hat mir das Script dies hier gemacht:

Zitat HDBB1A_ab.txt
HDBB2_ab.txt
HDBB3ab.txt
HDBD1b.txt
HDBD2.txt
HDBF1txt
HDBG1xt


In Hazel steht als Hinweis, wenn ich ein Shellscript einbinden möchte, folgendes:

Zitat Use $1 to refer to the file being processed.


was mir natürlich nicht viel sagt.


als Antwort auf: [#568891]

Kleines AppleScript oder Unix-ShellScript gesucht

Thomas Richard
Beiträge gesamt: 19324

12. Feb 2019, 16:48
Beitrag # 5 von 12
Beitrag ID: #568893
Bewertung:
(6626 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke Markus!

Nur zur Erläuterung:

Antwort auf: sed 's/.//6'


sed ist Suchen und Ersetzten im Terminal/UNIX.

die mv Zeile greift sich durch die for-next Schleife eine Datei nach der anderen und benennt sie um.

Es soll "gesucht und ersetzt" werden: dafür stetht das 's'
Trenner ist bei sed der Slash '/'
gesucht wird nach allem '.'
wieder Trenner '/'
ersetzt wird durch nix
wieder Trenner '/'
und zwar _nur_ für den 6. Treffer.

Also im Prinzip
sed s/SUCHEN/ERSETZEN/


Ich kenne das eigentlich so:
Code
sed 's6/.//' 



als Antwort auf: [#568890]

Kleines AppleScript oder Unix-ShellScript gesucht

Markus76
Beiträge gesamt: 340

12. Feb 2019, 16:51
Beitrag # 6 von 12
Beitrag ID: #568894
Bewertung:
(6619 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
@ Thomas: das ist dann ja eh dasselbe.

@ Ralf: ja dann hast es Dir ja ohnehin selber beantwortet. Bei mir funktioniert es. Das for f do und das done lässt du weg, alsu nur die Zeile mit mv und da ersetzt Du $f durch $1.

Markus


als Antwort auf: [#568892]

Kleines AppleScript oder Unix-ShellScript gesucht

Thomas Richard
Beiträge gesamt: 19324

12. Feb 2019, 17:06
Beitrag # 7 von 12
Beitrag ID: #568896
Bewertung:
(6612 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: In Hazel steht als Hinweis, wenn ich ein Shellscript einbinden möchte, folgendes:

Zitat Use $1 to refer to the file being processed.



Hazel will sich selbst um die Schleife kümmern, also darum, dass alle Dateien des Verzeichnisses abgearbeitet werden, also bräuchtest du nur den Teil der Umbenennung für dein Script, also vermutlich

Code
mv $1 $(echo $1 | sed ‘s/.//6’) 

oder
Code
mv $1 $(echo $1 | sed ‘s6/.//’) 



als Antwort auf: [#568892]
(Dieser Beitrag wurde von Thomas Richard am 12. Feb 2019, 17:09 geändert)

Kleines AppleScript oder Unix-ShellScript gesucht

Markus76
Beiträge gesamt: 340

12. Feb 2019, 17:08
Beitrag # 8 von 12
Beitrag ID: #568897
Bewertung:
(6606 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Thomas, das war jetzt die charmantere Formulierung von dem was ich geschrieben habe ;-)


als Antwort auf: [#568896]

Kleines AppleScript oder Unix-ShellScript gesucht

Thomas Richard
Beiträge gesamt: 19324

12. Feb 2019, 17:10
Beitrag # 9 von 12
Beitrag ID: #568898
Bewertung:
(6606 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Jupp ;)

Trotzdem gern geschehen.

Nachtrag:

Inzwischen ist mir auch klar, was bei Ralfs erstem Versuch schief läuft.

Es gibt jetzt 2 Schleifen, einmal von Hazel und einmal vom Script, beim ersten Hazeldurchlauf wird wohl nichts gemacht, beim 2. Durchlauf wird die 2. Datei korrekt gekürzt, die folgenden aber auch.
beim dritten Hazeldurchlauf für Datei 3 wird alles ab 3 nochmals um ein Zeichen gekürzt, und so weiter ...


als Antwort auf: [#568897]
(Dieser Beitrag wurde von Thomas Richard am 12. Feb 2019, 17:17 geändert)

Kleines AppleScript oder Unix-ShellScript gesucht

Markus76
Beiträge gesamt: 340

12. Feb 2019, 17:21
Beitrag # 10 von 12
Beitrag ID: #568899
Bewertung:
(6595 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das ist ja auch logisch.
Wusste ich ja nicht das es die Schleife nicht braucht. Also somit Schleife in der Schleife und das gesammte wird immer wieder verwendet weil $1 ...


als Antwort auf: [#568898]

Kleines AppleScript oder Unix-ShellScript gesucht

Ralf Hobirk
Beiträge gesamt: 5961

12. Feb 2019, 18:40
Beitrag # 11 von 12
Beitrag ID: #568901
Bewertung:
(6557 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Leider funktioniert es weder mit der einen, noch mit der anderen von Thomas geschriebenen Scriptzeile. Im Log erhalte ich eine Fehlermeldung:

Code
2019-02-12 18:30:41.869 hazelworker[99549] [Error] Shell script failed: Error processing shell script on file /Users/rhobirk/Desktop/Rename Result/HDBB3A_ab.txt. 

2019-02-12 18:30:41.870 hazelworker[99549] Shellscript exited with non-successful status code: 1


Ich werde das mal im Hazel-Forum posten, wo in der Regel der Entwickler selbst antwortet. Ich gebe dann hier entsprechendes Feedback.

Trotzdem erstmal danke euch beiden!


als Antwort auf: [#568898]

Kleines AppleScript oder Unix-ShellScript gesucht

Ralf Hobirk
Beiträge gesamt: 5961

15. Feb 2019, 18:12
Beitrag # 12 von 12
Beitrag ID: #568934
Bewertung:
(6251 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
So, jetzt kommt endlich mein Feedback. Das Problem ist gelöst. Und dafür braucht es kein Script.

Hazel hat eine Option, die sich "Match filename" nennt. Dabei werden bestimmte Suchmuster (patterns) mit sog. "tokens" erstellt. Z. B. "Buchstabe", "Zahl", "Symbol", "Buchstabe oder Zahl" usw. Also im Grunde eine Art "komfortables Regex".

Die erstellten Suchmuster stehen dann auch in den "Rename"-Optionen zur Verfügung.


als Antwort auf: [#568901]
X