Arquivos e diretórios

Buscando (grep) em arquivos compactados

# -A linhas a mostrar depois da ocorrência
# -B linhas a mostrar antes da ocorrência
zgrep -A 50 -B 50 'command_status: 1281' files-*

# -E usa expressão regular na busca
zgrep -E 'command_status: [1-9]' files-*

Quem está escrevendo em um arquivo

fatrace | grep file.log

Listando extensões de arquivo, recursivamente

find . -type f -printf "%f\n" | awk -F. 'NF > 1 && $NF != "" {print $NF}' | sort -u

Criando um arquivo temporário

AlmaLinux

$ mktemp
/tmp/tmp.UHHyLzjCB0

Ubuntu Linux

$ tempfile
/tmp/fileR5dt6r

Removendo quebras de linha do Windows

AlmaLinux

sudo dnf install -y dos2unix
dos2unix original.csv

Ubuntu Linux

sudo apt-get install -y dos2unix
dos2unix original.csv

Dividindo um arquivo em partes menores

split --verbose --bytes=<size> -d <file> <prefix>

onde:

  • --bytes=<size> é o tamanho máximo de cada parte, em bytes, ou um número inteiro seguido de K, M, G, T, P, E, Z, Y
  • -d adiciona um sufixo numérico no final do nome do arquivo
  • <prefix> o nome de cada parte

um exemplo: um arquivo iso pode ser dividido em vários arquivos de 1Gb:

$ split --verbose --bytes=1G -d imagefile.iso img
creating file  "img00"
creating file "img01"
creating file "img02"
creating file "img03"
creating file "img04"

para juntar esses arquivos novamente, use

cat img00 img01 img02 img03 img04 > imagem.iso

Listando apenas uma coluna de um arquivo

um arquivo com colunas separadas por : pode ter seus dados exibidos assim

cat file.log | cut -d":" -f4

Exibindo o conteúdo de um arquivo, removendo duplicatas

cat file.log | awk '!a[$0]++'

Listando o conteúdo recursivo de um diretório

ls -R /my_path | awk '
/:$/&&f{s=$0;f=0}
/:$/&&!f{sub(/:$/,"");s=$0;f=1;next}
NF&&f{ print s"/"$0 }'

além de mostrar o conteúdo recursivamente, esse comando também mostra o caminho completo dos arquivos, não apenas os nomes.

referência: AskUbuntu.com

Obtendo o tipo mime de um arquivo

file --mime-type -b my_file

Buscando arquivo pelo conteúdo

grep -lr "text to fine" *.txt