Regex mit find unter Bash 4.3.46 zum filtern und organisieren von unterordnern (Mac OS 10.11.6)
Hallo,
ich habe ein Problem mit dem Identifizieren von Unterordnern im meiner Ordnerstruktur und suche Hilfe.
Die Ordnerstruktur ist einfach unterteilt.
1. Ebene, Name: "Zahlenordner"
2. Ebene, Ordnernamen bestehen aus fortlaufenden Zahlen - ohne führende Null (ca. 1000 Ordner)
3. Ebene, Ordnernamen bestehen aus irgendwelchen Zahlen - mit mindestens einer führenden Null
Beispiel:
-> Zahlenordner
->-> 123
->->-> 0001
->->-> 0002
->->-> 0003
->-> 124
->->-> 0001
->->-> 0002
->->-> 0003
Mein letztliches Ziel ist es, die Dateien, welche die Ordner der 3. Ebene enthalten, in die 2. Ebene zu überführen und die Ordner der 3. Ebene zu löschen.
Dafür möchte ich die Ordner zuerst identifizieren, aber leider bekomme ich -regex über find in der Bash nicht zum laufen.
Einen Automator-Workflow gibt es schon, allerdings muss hier auch immer wieder händisch eingegriffen werden.
Ich würde am liebsten eine kleines Shellscript schreiben was meine Wünsche erfüllt. Leider scheitere ich bereits jetzt beim Thema Regex.
Ich arbeite unter Mac OS 10.11.6/ Bash 4.3.46.
Folgender Befehle stehen derzeit exemplarisch für mein Problem:
find -E /Users/thomas/Desktop -type d -regex '^[1-9][0-9]*$' -print
(Filtern der Ordner der 2. Ebene)
find -E /Users/thomas/Desktop -type d -regex '^0\d*$' -print
(Filtern der Ordner der 3. Ebene)
Ich bin mir eigentlich sicher sicher, dass der Regex-Ausdruck soweit okay ist ... (habe es aber auch schon mit anderen Ausdrücken testweise probiert) aber es funktioniert nicht.
Vielleicht hat hier ja jemand eine Idee?
Viele Grüße,
Thomas
ich habe ein Problem mit dem Identifizieren von Unterordnern im meiner Ordnerstruktur und suche Hilfe.
Die Ordnerstruktur ist einfach unterteilt.
1. Ebene, Name: "Zahlenordner"
2. Ebene, Ordnernamen bestehen aus fortlaufenden Zahlen - ohne führende Null (ca. 1000 Ordner)
3. Ebene, Ordnernamen bestehen aus irgendwelchen Zahlen - mit mindestens einer führenden Null
Beispiel:
-> Zahlenordner
->-> 123
->->-> 0001
->->-> 0002
->->-> 0003
->-> 124
->->-> 0001
->->-> 0002
->->-> 0003
Mein letztliches Ziel ist es, die Dateien, welche die Ordner der 3. Ebene enthalten, in die 2. Ebene zu überführen und die Ordner der 3. Ebene zu löschen.
Dafür möchte ich die Ordner zuerst identifizieren, aber leider bekomme ich -regex über find in der Bash nicht zum laufen.
Einen Automator-Workflow gibt es schon, allerdings muss hier auch immer wieder händisch eingegriffen werden.
Ich würde am liebsten eine kleines Shellscript schreiben was meine Wünsche erfüllt. Leider scheitere ich bereits jetzt beim Thema Regex.
Ich arbeite unter Mac OS 10.11.6/ Bash 4.3.46.
Folgender Befehle stehen derzeit exemplarisch für mein Problem:
find -E /Users/thomas/Desktop -type d -regex '^[1-9][0-9]*$' -print
(Filtern der Ordner der 2. Ebene)
find -E /Users/thomas/Desktop -type d -regex '^0\d*$' -print
(Filtern der Ordner der 3. Ebene)
Ich bin mir eigentlich sicher sicher, dass der Regex-Ausdruck soweit okay ist ... (habe es aber auch schon mit anderen Ausdrücken testweise probiert) aber es funktioniert nicht.
Vielleicht hat hier ja jemand eine Idee?
Viele Grüße,
Thomas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 311485
Url: https://administrator.de/forum/regex-mit-find-unter-bash-4-3-46-zum-filtern-und-organisieren-von-unterordnern-mac-os-10-11-6-311485.html
Ausgedruckt am: 18.04.2025 um 03:04 Uhr
3 Kommentare
Neuester Kommentar

Hi, bash matches the whole path in the regex not only the name of the folder, so this regex should work:
From the man page:
Regards
'.*/0\d*$'
From the man page:
-regex pattern
File name matches regular expression pattern. This is a match on the whole path, not a search. For example, to match a file named './fubar3', you can use the
regular expression '.*bar.' or '.*b.*3', but not 'b.*r3'.
Regards