2013-12-09 5 views
5

Ich versuche, ein wirklich einfaches Bash-Skript zu erstellen, das die ersten Zeilen jeder Datei in einem bestimmten Verzeichnis auflistet. Das Verzeichnis sollte durch das Argument angegeben werden. Ich denke, dass der Befehl Grep verwendet werden sollte, aber ich habe wirklich keine Ahnung, wie.Liste die ersten Zeilen jeder Datei in einem Verzeichnis

Mein existierendes Skript scheint überhaupt nicht zu funktionieren, es macht also keinen Sinn, es hier einzutragen.

+1

Versuchen Sie: 'Kopf -n 5 *' – pfnuesel

Antwort

0
for file in dir/*; do 
    echo "-- $file --" 
    head "$file" 
    echo 
done 
7

Verwenden Kopf Befehl:

head -3 /path/to/dir/* 
0

Da bash Dateiname Erweiterung funktioniert (Globbing) standardmäßig, können Sie einfach Ihre Shell Eingang erweitern lassen und lassen Sie den Kopf machen den Rest:

head * 

Das * Platzhalterzeichen wird auf alle Dateinamen im Arbeitsverzeichnis erweitert. Auf zsh können Sie dies gut sehen, wenn es Ihre Befehlszeile automatisch abschließt, wenn Sie die Tabulatortaste drücken.

Sie können die Anzahl der Zeilen mit dem Argument -n in head ändern.

Wenn Sie diese rekursiv tun wollen:

find . \! -type d -exec head '{}' + 
0

Wenn Sie die ersten Zeilen aller Dateien in .txt enden wollen, versuchen

head *.txt 

oder

head --lines=3 *.txt 
3

Für jede Antwort mit head und *, Umleitung Stoderr zu/dev/null, wenn Sie Fehler wie sehen möchten:

head: error reading ‘tmp’: Is a directory 
Verwandte Themen