2010-08-20 1 views

Antwort

52

haben Wenn Sie mehr komfortabel mit „ls“ und „grep“ sind Sie können tun, was Sie wollen, indem Sie einen regulären Ausdruck im Befehl grep verwenden (die Endung '$' bedeutet, dass .doc am Ende der Zeile stehen muss. Das schließt "file.doc.txt" aus):

ls -R |grep "\.doc$" 

Weitere Informationen zur Verwendung von grep mit regulären Ausdrücken in the man.

+3

+1, lernen etwas neues über Linux jeden Tag. –

+1

wahrscheinlich gut, um den Punkt zu entkommen, sonst würde eine Datei wie 'hellodoc' auch übereinstimmen. 'ls -R | grep "\ .doc $" ' – fedorqui

+4

Gibt es eine Möglichkeit, den vollständigen Pfad einer Datei anzuzeigen, die' ls' findet? Im Moment habe ich nur eine Liste aller Dateien, aber ich weiß nicht, wie ich sie jetzt finden soll. – Russell

29

ls Befehlsausgabe ist hauptsächlich für das Lesen von Menschen bestimmt. Für erweiterte Abfrage- für die automatisierte Verarbeitung sollten Sie mächtiger find Befehl:

find /path -type f \(-iname "*.doc" -o -iname "*.pdf" \) 

Als ob Sie bash 4.0 ++

#!/bin/bash 
shopt -s globstar 
shopt -s nullglob 
for file in **/*.{pdf,doc} 
do 
    echo "$file" 
done 
+0

Es ist **/*. Pdf **/*. Doc - Sie rekursieren nicht in die Unterverzeichnisse ohne es – Petesh

+0

seine tatsächlich Doppelstern – ghostdog74

+7

Sie können 'ls **/*. {Pdf, doc}' oder 'für Datei in **/*. {pdf, doc}' –

2

Einige der anderen Methoden, die verwendet werden können:

echo *.{pdf,docx,jpeg}

stat -c %n * | grep 'pdf\|docx\|jpeg'

-1

Ebenso, wenn Sie es vorziehen, das Wildcard-Zeichen * (nicht ganz wie die Regex Kommentaren) verwenden, können Sie nur ls verwenden mit dem -l Flag, um eine Datei pro Zeile (wie Grep) und die -R Flagge wie du auflisten. Dann können Sie die Dateien angeben, nach denen Sie suchen möchten mit *.doc I.E. Entweder

ls -l -R *.doc 

oder wenn Sie möchten, dass die Dateien in weniger Zeilen auflisten.

ls -R *.doc 
+0

Haben Sie versucht, dies auszuführen? mkdir tmp; CD tmp; mkdir a; berühren Sie a/a.doc; ls -l -R * .doc –

1
find . | grep "\.doc$" 

Dies wird auch den Weg zeigen.