wiki:linux:comandos:comando_globbing
Table of Contents
Exemplos de Globbing e Redirecionadores no Linux
Nível Básico
- Listar todos os arquivos `.txt` no diretório atual:
ls *.txt
- Usa o padrão `*.txt` para listar todos os arquivos com a extensão `.txt`.
- Concatenar todos os arquivos de log `.log` e exibir no terminal:
cat *.log
- Usa o *globbing* `*.log` para combinar todos os arquivos `.log` e exibir o conteúdo.
- Excluir todos os arquivos que começam com “temp” no diretório atual:
rm temp*
- Usa o padrão `temp*` para remover todos os arquivos cujo nome começa com “temp”.
- Mover todos os arquivos que terminam com `.bak` para um diretório específico:
mv *.bak /backup/
- Usa `*.bak` para mover todos os arquivos com extensão `.bak` para o diretório `/backup/`.
- Redirecionar a saída de um comando para um arquivo:
ls -l > lista_de_arquivos.txt
- Salva a saída detalhada do comando `ls` no arquivo `lista_de_arquivos.txt`.
Nível Intermediário
- Contar todas as linhas de arquivos que começam com “relatorio”:
wc -l relatorio*
- Conta o número de linhas em todos os arquivos que começam com “relatorio”.
- Copiar todos os arquivos `.jpg` e `.png` para o diretório `imagens/`:
cp *.{jpg,png} imagens/- Usa *globbing* para copiar todos os arquivos `.jpg` e `.png` para o diretório `imagens/`.
- Listar arquivos cujo nome contém um número (ex.: `arquivo1.txt`, `dados2023.csv`):
ls *[0-9]*
- Lista todos os arquivos cujo nome contém um número (qualquer número entre 0 e 9).
- Redirecionar a saída de um comando para dois arquivos simultaneamente:
echo "Dados importantes" | tee arquivo1.txt arquivo2.txt
- Escreve a mensagem “Dados importantes” em dois arquivos ao mesmo tempo.
- Buscar por arquivos `.conf` e redirecionar o resultado para um arquivo:
find /etc -name "*.conf" > lista_conf.txt
- Usa o comando `find` para procurar arquivos `.conf` no diretório `/etc` e salva a lista em `lista_conf.txt`.
Nível Avançado
- Exibir os 5 arquivos `.log` mais recentes, ordenados por data:
ls -lt *.log | head -n 5
- Lista todos os arquivos `.log`, ordenados por data de modificação, e exibe apenas os 5 mais recentes.
- Excluir todos os arquivos exceto aqueles que começam com “backup” e terminam em `.tar.gz`:
rm !("backup*.tar.gz")- Remove todos os arquivos no diretório atual, exceto os que seguem o padrão “backup*.tar.gz” (requer que o *extglob* esteja habilitado).
- Buscar por palavras-chave em vários arquivos de log e redirecionar os erros para um arquivo separado:
grep "erro" *.log > erros.txt 2> grep_erros.log
- Procura por “erro” em todos os arquivos `.log` e redireciona os erros do comando `grep` para `grep_erros.log`.
- Copiar todos os arquivos `.sh` que foram modificados nos últimos 7 dias para o diretório `scripts_backup/`:
find . -name "*.sh" -mtime -7 -exec cp {} scripts_backup/ \;- Encontra todos os arquivos `.sh` modificados nos últimos 7 dias e os copia para o diretório `scripts_backup/`.
- Redirecionar tanto a saída padrão quanto os erros para um arquivo de log:
comando > saida.log 2>&1
- Redireciona a saída padrão do `comando` para `saida.log` e também redireciona os erros para o mesmo arquivo.
Nível Especializado
- Combinar múltiplos arquivos `.csv` em um só, preservando o cabeçalho apenas do primeiro arquivo:
awk '(NR == 1) || (FNR > 1)' *.csv > combinado.csv
- Usa `awk` para combinar todos os arquivos `.csv`, preservando o cabeçalho do primeiro arquivo e excluindo os cabeçalhos dos arquivos subsequentes.
- Compressão paralela de todos os arquivos `.log` maiores que 100 MB:
find . -name "*.log" -size +100M -print0 | xargs -0 -P4 gzip
- Encontra arquivos `.log` maiores que 100 MB e os comprime em paralelo usando 4 threads.
- Comparar o conteúdo de dois diretórios, exibindo as diferenças em arquivos `.txt`:
diff <(ls dir1/*.txt) <(ls dir2/*.txt)
- Usa `diff` para comparar o conteúdo de dois diretórios com arquivos `.txt`, exibindo as diferenças.
- Excluir arquivos em um diretório que não estão em um diretório de backup correspondente:
rsync -av --delete /origem/ /backup/
- Usa `rsync` para sincronizar os arquivos entre dois diretórios e remover do diretório de destino arquivos que não existem mais no diretório de origem.
- Executar um comando em todos os arquivos `.conf`, concatenando as saídas em um único arquivo:
for file in *.conf; do cat "$file"; done > combinado_conf.txt
- Executa um `cat` em todos os arquivos `.conf` e concatena o conteúdo no arquivo `combinado_conf.txt`.
wiki/linux/comandos/comando_globbing.txt · Last modified: by Wiki Administrator
