Ich möchte eine Aktion ausführen (z. B. chown ) auf alle versteckten Dateien in einem Verzeichnis.
Ich weiß, dass dieser .* ist nicht eine gute Idee, da es auch den aktuellen . findet und übergeordneter .. Verzeichnisse (ich weiß, dass rm funktioniert nicht mit . und .. aber andere Befehle, einschließlich chown und chmod , tritt gerne in Kraft)
Aber alle meine versteckten Dateien haben unterschiedliche Namen!
Wie soll ich für alle versteckten Dateien globen, während ich . ausschließe? und .. ?
Akzeptierte Antwort:
Sie können den folgenden extglob verwenden Muster:
[email protected](!(.|))
-
.entspricht einem wörtlichen.zuerst -
@()ist einextglobpattern, stimmt mit einem der darin enthaltenen Muster überein, da wir nur ein Muster darin haben, wird es dieses auswählen -
!(.|)ist ein weitererextglobMuster (verschachtelt), das auf jede Datei mit keinem oder einem.passt; Da wir.abgeglichen haben Schon beim Start wird dieses ganze Muster auf alle Dateien passen, die mit.beginnen außer.und...
extglob ist bei interaktiven Sitzungen von bash aktiviert standardmäßig in Ubuntu. Wenn nicht, aktivieren Sie es zuerst:
shopt -s extglob
Beispiel:
$ echo [email protected](!(.|))
.bar .foo .spam