[XXX] -remove all YYYY -leave it YX changing, [] always the same YY[XXXX]YY --> YYYY rename.ul "[*]" "" *.* doesn't work
am liebsten mit rename.ul oder Nautilus (alle Dateien markieren Rechtsklick rename) weil das die einfachsten Programme sind.
Anmeldungsdatum: Beiträge: 1077 |
[XXX] -remove all YYYY -leave it YX changing, [] always the same YY[XXXX]YY --> YYYY rename.ul "[*]" "" *.* doesn't work am liebsten mit rename.ul oder Nautilus (alle Dateien markieren Rechtsklick rename) weil das die einfachsten Programme sind. |
||||
Anmeldungsdatum: Beiträge: 328 Wohnort: Sachsen-Lausitz |
Kann mit dieser Mitteilung nichts anfangen ??? |
||||
Anmeldungsdatum: Beiträge: 11179 Wohnort: München |
Kann man das so zusammenfassen, dass du eckige Klammern inkl. Inhalt entfernen willst oder was genau ist die Problemstellung? Mit rename (aka rename "s/\[.*\]//g" * |
||||
Anmeldungsdatum: Beiträge: 328 Wohnort: Sachsen-Lausitz |
Ich weis überhaupt nicht was hier los ist, Habe keine Frage gestellt |
||||
(Themenstarter)
Anmeldungsdatum: Beiträge: 1077 |
Danke sea, das hat funktioniert, das Programm kenne ich noch nicht, muss ich mir mal genauer ansehen, sieht sehr vielversprechend aus. Ist ein klein wenig umfangreicher als rename.ul. Warum?: (verschachtelte Klammern mit regulären Ausdrücken zu bearbeiten ist generell eine schlechte Idee |
||||
Anmeldungsdatum: Beiträge: 11179 Wohnort: München |
Weil man eine Regex-Engine braucht, die Rekursion zulässt (was Perl IIRC kann), sonst wird das ganze recht schnell unübersichtlich und unnötig langsam: http://www.drregex.com/2017/11/match-nested-brackets-with-regex-new.html - oft tut man sich da mit einem programmatischen Ansatz leichter, bei dem man die Strukturen nach zusammengehörigen Klammern auflöst, also einen Tokenizer (aka Lexer) nutzt. |
||||
Projektleitung
Anmeldungsdatum: Beiträge: 12822 |
Ich würde eher davon ausgehen, dass es mehrere Vorkommen gibt und nicht von der ersten bis zur letzten ersetzen. Dann bleibt oft nicht viel übrig. Also würde ich Sequenzen von [...] ersetzen, die keine eckigen Klammern enthalten: rename 's/\[[^\[\]]*\]//g' * (ungetestet) |
||||
Anmeldungsdatum: Beiträge: 11179 Wohnort: München |
Das hängt davon ab, was man haben will - entweder alles zwischen den äußersten eckigen Klammern oder nur Zeichen zwischen einem Paar von eckigen Klammern oder alles zwischen balancierten eckigen klammern mit Rekursion: $ rename -n "s/\[.*\]//g" * foo[[bar].txt -> foo.txt foo[[bar]].txt -> foo.txt foo[bar].txt -> foo.txt $ rename -n 's/\[[^\[\]]*\]//g' * foo[[bar].txt -> foo[.txt foo[[bar]].txt -> foo[].txt foo[bar].txt -> foo.txt $ rename -n 's/\[([^\[\]]|(?R))*\]//g' * foo[[bar].txt -> foo[.txt foo[[bar]].txt -> foo.txt foo[bar].txt -> foo.txt |
||||
Anmeldungsdatum: Beiträge: 17552 Wohnort: Berlin |
[XXX] -remove all YYYY -leave it YX changing, [] always the same YY[XXXX]YY --> YYYY rename.ul "[*]" "" *.* doesn't work Ist das englische ein Zitat oder wieso postest Du mit 2 Sprachen? Speziell Die eckigen Klammern stehen oft für Zeichenklassen wie Das wäre dann
wobei das perl-rename einen dry-mode kennt, bei dem die Aktion nicht wirklich ausgeführt wird, sondern man bekommt gezeigt, was gemacht werden würde, was hier praktisch ist. Schwierig wird es, wenn es im Dateinamen mehrere
könnte bei ungeschachtelten Wiederholungen funktionieren, aber ist nicht getestet. |
||||
(Themenstarter)
Anmeldungsdatum: Beiträge: 1077 |
2 Sprachen? Computer sind inhärent englisch deswegen, gesucht wird wohl auch eher in englich als in deutsch. Da ist manchmal auch schwieriger sich in deutsch auszudrücken. Die eckige Klammer kommt nur einmal vor. Ich muss mich mal in das pearl rename einfuchsen, wird sich wie gewohnt sicher lohnen. Die rename.ul Vorschläge funktionieren nicht, aber es gibt hier die -nv option um die Änderungen nur anzuzeigen nicht auszuführen. Noch ne kleine rename.ul Anleitung: ?=jeweis 1 Zeichen ???name oder name?????name rename.ul "search" "replace" infilepattern rename.ul "zu suchender Ausdruck" "zu ersetzender Ausdruck" *zu suchender Ausdruck* rename.ul "" "p0" *.txt (a.txt wird zu p0a.txt ...) rename.ul "p0" "" *p0* (p0a.txt wird zu a.txt) 1.dat bis 20.dat in 001.dat bis 020.dat: rename.ul "" 00 ?.* rename.ul "" 0 ??.* 1.jpg 001.jpg 2.jpg 002.jpg 5.jpg 003.jpg .... 12.jpg 009.jpg |
||||
Anmeldungsdatum: Beiträge: 17552 Wohnort: Berlin |
Mir fällt auf, dass ich ein rename.ul auf der Platte habe - das kannte ich noch gar nicht. Es scheint keine regulären Audrücke zu können - was ist das für ein überflüssiges Klump? Was kann es, was Wenn Du eine durchlaufende Nummerierung hast, die Du auf einheitliche Breite bringen willst, kannst Du auch sowas machen:
|