Wie kann ich 'ls' in einem Dotfile machen?

598
dogbane

ls auf einer Punktdatei

Mein Verzeichnis enthält:

$ ls -A  .dotfile20091021 file20091020 file20091021 

Ich möchte ALLE Dateien auflisten, die 20091021 im Namen enthalten.

Wenn ich renne:

$ ls -A *20091021*  file20091021 

Wenn ich renne:

$ ls -A .*20091021*  .dotfile20091021 

Kann ich beide Dateien in einem einzigen "ls" -Befehl erhalten?

0
Schon mal was von 'grep' gehört? Tim Post vor 14 Jahren 0

4 Antworten auf die Frage

4
Matthew Scharley
ls -A1 | grep "20091021" 
Ich denke, das ist vielleicht das beste, da es nur auf die Standardausgabe von ls und das grep-Tool angewiesen ist, die beide weithin verfügbar sind. JF jfmessier vor 14 Jahren 0
2
razlebe

Sie können es einfach tun

ls -a *20091021 .*20091021 

(Halten Sie sich strikt an Ihre Anfrage, dass Sie dies in einem einzigen Schritt tun möchten. ls)

Dies hängt von der Shell für die Glob-Erweiterung ab. Tim Post vor 14 Jahren 1
/ bin / sh kann auf viele Dinge verweisen, von Distro zu Distro :) Tim Post vor 14 Jahren 0
Es ist nicht so sehr, dass es möglicherweise nicht so gut funktioniert, wie es Fehler gibt, wenn der Glob nicht mit irgendetwas übereinstimmt. Matthew Scharley vor 14 Jahren 0
1
Peter van der Heijden

Entsprechend diesem Link gibt es eine Bash-Option zum Globieren von Punktdateien:

shopt -s dotglob 

Wenn Sie bash verwenden, müssen Sie danach nur noch Folgendes tun:

ls -A *20091021* 

(Kann es hier nicht testen)

0
Tim Post

Sie sind darauf angewiesen (egal welche Shell Sie verwenden), um die Glob-Erweiterung durchzuführen.

ls -lah | grep \.foo 

... könnte Ihnen helfen, das auf tragbare Weise zu klären.

Zum Beispiel:

user@tower:~ ls -lah | grep \.mozilla drwx------ 3 root root 4.0K 2007-11-14 06:17 .mozilla user@tower:~  

Seht, die Macht der Pfeifen :) Das Erweitern ist eine Übung für den Leser. shopt ist nicht portabel und auf Systemen, die ausschließlich eine POSIX-Shell verwenden (z. B. Bindestrich), bricht es. Besser, es einfach und portabel zu schreiben ... oder Sie laden Ihr altes und bewährtes Skript in eine Box mit einer anderen Distribution und sehen zu, wie es schrecklich bricht.

NB: Jede Shell führt eine Glob-Erweiterung auf ihre eigene Weise durch, die weitgehend von ihrer Lizenz bestimmt wird. Bitte, bitte, bitte vermeiden Sie Bösewichte. Ubuntu gab Zehntausende Dollar aus, um die in seinem Produkt befindlichen zu beseitigen.