$ for file in ./tmp/*.txt; do echo "$file"; cat "$file"; done
-ou -
$ find ./tmp -maxdepth 1 -name "*.txt" -print -exec cat {} \;
Existe um comando para mostrar o nome do diretório / arquivo quando os arquivos do gato?
Por exemplo: suponha que dois arquivos f1.txt e f2.txt estejam em ./tmp
./tmp/f1.txt
./tmp/f2.txt
Então quando eu faço cat ./tmp / *. txt , somente o conteúdo dos arquivos será mostrado. Mas como mostrar primeiro o nome do arquivo e depois o conteúdo ?, por exemplo:
(The needed command):
./tmp/f1.txt:
This is from f1.txt
and so on
./tmp/f1.txt:
This is from f2.txt ...
Existe um comando para fazer isso? (Parece não haver nenhuma opção para 'cat' mostrar os nomes dos arquivos)
Assim como outra ideia, tente tail -n +1 ./tmp/*.txt
==> file1.txt <==
<contents of file1.txt>
==> file2.txt <==
<contents of file2.txt>
==> file3.txt <==
<contents of file3.txt>
Você poderia facilmente escrever um pequeno script fazendo exatamente isso,
for f in "$@" do; echo "This is from $f"; cat -- "$f"; done
find . -name '*' -execdir cat '{}' \;
Quando um diretório é passado para cat
, você verá algo como:
cat: ./chapter_01: Is a directory
Imediatamente após, o find
irá cat
do conteúdo desse diretório.
Não é exatamente o que você pediu, mas você pode prefixar cada linha com o nome do arquivo:
$ grep ^ ./tmp/*.txt
./tmp/f1.txt: this is from f1.txt
./tmp/f1.txt: blaa, blaa, blaa...
./tmp/f1.txt: blaa, blaa, blaa...
./tmp/f2.txt: this is from f2.txt
./tmp/f2.txt: blaa, blaa, blaa...
./tmp/f2.txt: blaa, blaa, blaa...
Será difícil fazer muito melhor que isso sem recorrer a um pequeno script.
cat é (intencionalmente) um comando extremamente simples que apenas lê um fluxo de arquivo e o copia para outro (com algumas opções básicas de formatação). Seria bastante fácil criar um utilitário baseado no cat que forneceu o nome do arquivo, mas as versões padrão não farão isso - provavelmente porque é fácil replicar com outros comandos.
Se você quiser examinar as páginas manualmente, pode usar 'menos'. Isto lhe dará o nome do arquivo no final de cada arquivo, no formato: 'foo.txt (arquivo 1 de 100) (END) - Próximo: bar.txt).
grep . *.txt
Corresponde a todas as linhas e também mostra nomes de arquivos