Como eu uso o grep para encontrar todos os arquivos zip em um diretório?

4

Eu tenho um diretório com mais de 1000 arquivos, e alguns deles são arquivos .zip, e eu quero transformá-los em arquivos .tgz.

Eu quero usar o grep para fazer uma lista de nomes de arquivos. Eu tentei "grep *. Zip" sem sucesso. Lendo as man pages, achei que * era um seletor universal. Por que isso não está funcionando?

Obrigado.

    
por David Faux 19.01.2012 / 18:33

2 respostas

8

Você deveria realmente usar find .

find <dir> -iname \*.zip

Exemplo: para procurar todos os arquivos .zip no diretório atual e todos os subdiretórios tente isto:

find . -iname \*.zip

Isso listará todos os arquivos que terminam com .zip sobre o caso. Se você quiser apenas aqueles com alteração de letra minúscula -iname to -name

O comando grep procura por picadas em arquivos, não por arquivos. Você pode usá-lo com find para listar todos os seus arquivos .zip como este

find . |grep -e "\.zip$"
    
por Zoke 19.01.2012 / 18:41
2

O grep usa expressões regulares por padrão. A expressão que você deseja é:

grep .zip $

Você provavelmente deseja usar find .

encontre. -name '* .zip'

Ou você pode encontrar um pipe no grep

find . | grep .zip$
    
por xnm 19.01.2012 / 18:56

Tags