RegEx Problem ... grep kein \. außer \.name

L

Lito

Grünschnabel
Hallo Leute,

ich möchte gerne einen regulären ausdruck zum filtern bestimmter dateien außer 1 bestimmten.

Konkret bedeutet das ich möchte alle dateien die mit einem punkt beginnen nicht angezeigt bekommen außer .dateiname (hoffe Ihr versteht was ich meine)

Meine idee klappt nicht so wirklich hat jeman eine idee: ls -a | grep ???? ?( ?( ?(


Danke schon mal wird warscheinlich ne kleinigkeit sein für jemand der das kann :-)
 
öhm,
Code:
ls -a .dateiname
?

Hi und Danke für die schnelle Antwort ... Ich muss aber etwas genauer werden :rtfm:...
Ein Skript läuft das alle Dateien verarbeitet, außer die mit . beginnen und alle Verzeichnisse die mit Punkt beginnen.
Exkludiert werden also...
.*/\..* # ...Verzeichnisse und
^\..* # ...Files die mit Punkt beginnen

außer der .proxies Ordner der soll weiterhin verarbeitet werden .

also ls -a | grep ^[\.] | grep .proxies nur umgedreht ich will also eigentlich alle Dateien mit Punkt am anfang außer .proxies als Regulären ausdruck... die ich meinem Filter übergebe.
am End geht das auch garnicht mit regEx :think:

Ich hoffe jetzt ist es Verständlich

Ich will alle Datein mit Punkt außer .proxies filtern.


Greetings Eartlings
 
Zuletzt bearbeitet:
Hi,

wenn du Dateien ausschließen möchtest, dann benutz doch einfach grep -v. Damit wählst du aus, was du NICHT angezeigt haben möchtest =)

-v, --invert-match
Invert the sense of matching, to select non-matching lines.

mfg
MvB
 
Zuletzt bearbeitet:
Also zunächst: In den eckigen Klammern musst du den Punkt nicht escapen. Außerdem kannst du mit grep mehrere Suchmuster verwenden, die verodert werden.

Folgendes Script findet Dateien/Ordner, deren erster Buchtstabe kein Punkt ist oder die ".bashrc" heißen:
Code:
ls -a | grep -e '^[^.]' -e '^\.bashrc$'

Wenn du noch zwischen Dateien und Verzeichnissen unterscheiden willst, oder komplexere Tests einbauen willst, solltest du dir mal `find` ansehen, damit kannst du dann sehr flexibel Filterkriterien basteln. (Es gibt z.B. einen `-regex` oder einen `-type f` Filter.)
 
Zuletzt bearbeitet:
Eh, das fällt aber unter die Kategorie "Warum einfach wenn's auch kompliziert geht", oder?
Warum nicht einfach $(ls) + den einen Ordner der zusätzlich geprüft werden soll?

Z.B.:
Code:
for file in $(ls) .proxies; do
  echo $file
done

Wenn es komplexer als eine einfache for Schleife sein soll, kann man den Kram erst in einem Array zwischenspeichern...

Edit:
Hrhr, und da trete ich direkt den Beweis an dass ich das schon zu lange nich mehr gemacht hab, statt $(ls) sollte es natuerlich * sein...
Code:
for f in * .proxies; do echo $f; done

MfG,
bytepool
 
Zuletzt bearbeitet:

Ähnliche Themen

[PERL] Mit Regex kompletten String durchsuchen und ersetzen

Zurück
Oben