2017-09-22 1 views
0

Ich versuche nur bestimmte Zeilen aus der Ausgabe anhand von Schlüsselwörtern drucken grepFormat der Ausgabe von ls -lRA Befehl grep

ls -RlA | grep foo | sed -n '1 p' 
ls -RlA | grep bar | sed -n '1 p' 
ls -RlA | grep foo_file 
ls -RlA | grep bar_file 

Gibt es eine Möglichkeit, diese Aussagen in nur einem Befehl zu vereinfachen?

P. S: Bestellung keine Rolle spielt

+0

Haben Sie den Suchbefehl angesehen? – 123

+0

Ja, ich habe. Aber ich möchte die ls -l-Ausgabe nur im Zusammenhang mit den Schlüsselwörtern "foo_file", "bar_file", "foo" und "bar" ausgeben. Ich denke nicht, dass wir das für nützlich halten könnten. – kingmakerking

+3

Welchen Teil der Ausgabe suchen Sie? Der Dateiname? Fügen Sie Ihrer Frage ein vollständiges Beispiel hinzu. – 123

Antwort

2

Suche alle Dateien oder Verzeichnisse mit den angegebenen Namen:

find . '(' -name foo -o -name bar -o -name foo_file -o -name bar_file ')' -ls 

Eine kompaktere Version eine regex:

find . -regex '.*/\(foo\|bar\|foo_file\|bar_file)' -ls 

Wie oben, aber überprüfen, ob foo_file und bar_file Dateien sind, nicht Verzeichnisse:

find . '(' -name foo -o -name bar -o -name foo_file -type f -o -name bar_file -type f ')' -ls 
1

Hier in einem Befehl.

ls -la **/{foo,bar,foo_file,bar_file} 

können Sie auch * innerhalb {}, wie {*.txt,foo_*.zip} verwenden.

Beachten Sie, dass es nicht funktioniert, wenn eines der Felder innerhalb {} nicht gefunden wird.

Verwandte Themen