Você pode fazer algumas coisas.
head
e tail
são ambos especificados para exibir as dez / últimas linhas de um arquivo por padrão - mas se chamado w / multiple arguments fará isso para todos e exibirá os nomes dos arquivos para cada um. E, é claro, para cada um, você pode usar o argumento -n[num]
para especificar um número de linhas diferentes das dez padrão que você gostaria de exibir. Eu suponho que seu problema CTRL-C estava relacionado à opção -f
- que instruiria tail
a seguir um arquivo - você provavelmente deveria deixar isso de lado.
Outra coisa que você pode fazer - que resultará em um resultado um pouco diferente do que na pergunta, mas que você ainda pode gostar, é ...
grep -F '' ./*files
grep
também é especificado para exibir o nome do arquivo para suas correspondências quando recebe vários argumentos de nome de arquivo - mas grep
faz isso na cabeça de cada linha. Como
seq 10 >nums.txt; grep -F '' /dev/null nums.txt
... que imprime ...
nums.txt:1
nums.txt:2
nums.txt:3
nums.txt:4
nums.txt:5
nums.txt:6
nums.txt:7
nums.txt:8
nums.txt:9
nums.txt:10
... e destacado no meu terminal. A coisa /dev/null
é apenas um pequeno truque para forçar o comportamento do argumento de vários arquivos, mesmo quando se trabalha com apenas um único arquivo, e grep -F ''
corresponde a todas as linhas - mesmo as em branco.
E aqui está o head /dev/null nums.txt
:
==> /dev/null <==
==> nums.txt <==
1
2
3
4
5
6
7
8
9
10
A saída de
tail
é idêntica neste caso - mas, novamente, ambos os utilitários apenas imprimem tantas linhas de um arquivo.
Com a última versão do GNU sed
você pode usar o comando F
como:
sed -s 1F ./*files
... ou se você quiser uma pequena borda ao redor do nome do arquivo ...
sed -se '1!b;i\n---' -e 'F;i\---\n' nums.txt
... que gosta ...
---
nums.txt
---
1
2
3
4
5
6
7
8
9
10
Ou se você quisesse ser aventureiro, poderia fazer ...
tar -c ./*files | tr -s \0 | cut -d '' -f1,2,13 | tr 'grep -F '' ./*files
' '\n'
... mas isso provavelmente não é prático.