2013-12-09 16 views
5

Sto provando a creare uno script bash davvero semplice, che elencherà le prime righe di ogni file in una directory specifica. La directory dovrebbe essere specificata dall'argomento. Penso che il comando Grep debba essere usato, ma non ho davvero idea di come.Elenca le prime righe di ogni file in una directory

Il mio script esistente sembra non funzionare affatto, quindi è inutile inserirlo qui.

+1

Provare: 'head -n 5 *' – pfnuesel

risposta

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

Utilizzare il comando testa:

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

Perché bash fa espansione dei nomi (globbing) per impostazione predefinita, si può semplicemente lasciare la shell espande in ingresso e lasciare che la testa faccia il resto:

head * 

Il carattere jolly * si espande in tutti i nomi di file nella directory di lavoro. Su zsh puoi vederlo bene quando completa automaticamente la riga di comando quando premi la scheda.

È possibile modificare la quantità di righe con l'argomento -n in testa.

Se si vuole fare questo in modo ricorsivo:

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

Se si desidera che le prime righe di tutti i file che terminano in .txt, provare

head *.txt 

o

head --lines=3 *.txt 
3

Per qualsiasi risposta utilizzando head e *, reindirizzamento stderr a/dev/null a meno che non si vogliano vedere errori come:

head: error reading ‘tmp’: Is a directory 
Problemi correlati