Shell Dateilisten nach undverknüpften Mustern filtern.

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
cirrussc
Beiträge: 6582
Registriert: 26.04.2007 19:47:06
Lizenz eigener Beiträge: MIT Lizenz

Shell Dateilisten nach undverknüpften Mustern filtern.

Beitrag von cirrussc » 11.03.2023 22:26:53

Für jeden Profi sicherlich keine besonders schwere Aufgabe, allerdings finde ich nirgends einen Weg, mit einfachen Boardmitteln und ohne riesige Befehlskette zwei je oderverknüpfte Ausdrücke undzuverknüpfen, spricht am Anfang soll Ausdruck1 oder 2 UND am Ende Ausdruck3 oder 4 insgesamt zutreffen.

Beispiel/Problemfall: Funktioniert natürlich nicht, da Bedingungen Anfang oder Ende beiderseits zutreffen.

Code: Alles auswählen

$ grep -l -E "^[r9a07g044l2-txrz|r9a07g044l2-karo]" -E "[.dtb|.dtbo]$" r9a07g044l2-*
grep: [.dtb|.dtbo]$: Datei oder Verzeichnis nicht gefunden
r9a07g044l2-dev.dtb
r9a07g044l2-karo-led.dtbo
r9a07g044l2-karo-otg-host.dtbo
r9a07g044l2-karo-sdcard-cd.dtbo
r9a07g044l2-karo-sdcard.dtbo
r9a07g044l2-smarc.dtb
r9a07g044l2-txrz-ft5x06.dtbo
r9a07g044l2-txrz-g2l0.dtb
r9a07g044l2-txrz-lcd-panel.dtbo
r9a07g044l2-txrz-rtc.dtbo
r9a07g044l2-txrz-sound.dtbo
Ziel: Ich möchte nur Dateien kopieren, die mit r9a07g044l2 beginnen, dann entweder txrz oder karo enthalten und am Ende nur mit .dtb oder .dtbo enden.
Gruß cirrussc
--------------------
„Der Mensch steigert zur Zeit die Nutzung dessen, was seiner Willkür unterliegt - und kommt sich sehr klug dabei vor.“ H. Gruhl

Benutzeravatar
Meillo
Moderator
Beiträge: 9224
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Shell Dateilisten nach undverknüpften Mustern filtern.

Beitrag von Meillo » 11.03.2023 22:43:44

Code: Alles auswählen

egrep '^r9a07g044l2.*(txrz|karo).*(\.dtb|\.dtbo)$'
Use ed once in a while!

Benutzeravatar
cirrussc
Beiträge: 6582
Registriert: 26.04.2007 19:47:06
Lizenz eigener Beiträge: MIT Lizenz

Re: Shell Dateilisten nach undverknüpften Mustern filtern.

Beitrag von cirrussc » 11.03.2023 23:24:29

Perfekt, dank dir!

Code: Alles auswählen

$ dir | egrep '^r9a07g044l2.*(txrz|karo).*(\.dtb|\.dtbo)$'
r9a07g044l2-karo-led.dtbo
r9a07g044l2-karo-otg-host.dtbo
r9a07g044l2-karo-sdcard-cd.dtbo
r9a07g044l2-karo-sdcard.dtbo
r9a07g044l2-txrz-ft5x06.dtbo
r9a07g044l2-txrz-g2l0.dtb
r9a07g044l2-txrz-lcd-panel.dtbo
r9a07g044l2-txrz-rtc.dtbo
r9a07g044l2-txrz-sound.dtbo
Nur verstand ich erst nicht, wie das funktioniert. Dank deines RegEx-Kurses allem Anschein nach also "." für alle Zeichen, "*" beliebig oft, wobei diese ".*"-Kombi also die Ausdrücke verbinden bzw. die Räume dazwischen füllt/leert.
Gruß cirrussc
--------------------
„Der Mensch steigert zur Zeit die Nutzung dessen, was seiner Willkür unterliegt - und kommt sich sehr klug dabei vor.“ H. Gruhl

Benutzeravatar
Meillo
Moderator
Beiträge: 9224
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Shell Dateilisten nach undverknüpften Mustern filtern.

Beitrag von Meillo » 12.03.2023 08:56:30

cirrussc hat geschrieben: ↑ zum Beitrag ↑
11.03.2023 23:24:29
also "." für alle Zeichen, "*" beliebig oft, wobei diese ".*"-Kombi also die Ausdrücke verbinden bzw. die Räume dazwischen füllt/leert.
Genau. :THX:
Use ed once in a while!

Antworten