Recursiva ls com condições

12

Por que não posso usar um comando como este para encontrar todos os arquivos pdf em um diretório e subdiretórios? Como eu faço isso? (Estou usando o bash no Ubuntu)

ls -R *.pdf

EDITAR

Como eu iria então deletar todos esses arquivos?

    
por Tomba 15.02.2011 / 15:05

3 respostas

19

Why can't I use a command like this to find all the pdf files in a directory and subdirectories?

O curinga *.pdf em seu comando é expandido por bash para todos os arquivos correspondentes no diretório atual, antes executando ls .

How do I do it? (I'm using bash in ubuntu)

encontre a sua resposta.

find . -name \*.pdf

é uma listagem recursiva de arquivos pdf. -iname é uma correspondência insensível a maiúsculas e minúsculas, por isso

find . -iname \*.pdf

lista todos os arquivos .pdf, incluindo, por exemplo, foo.PDF

Além disso, você pode usar ls para um número limitado de subpastas, por exemplo

ls *.pdf */*.pdf

para localizar todos os arquivos pdf em subpastas (corresponde a bar / foo.pdf, não a bar / foo / asdf.pdf e não a foo.PDF).

Se você quiser remover arquivos encontrados com o find, você pode usar

find . -iname \*.pdf -delete
    
por 15.02.2011 / 15:07
2

Como outros já disseram, encontrar é a resposta.

Agora, responda a outra parte.

  • Como eu iria então deletar todos esses arquivos?

    encontre. -iname * .pdf -exec rm {} \;

Deve fazer isso.

    
por 15.02.2011 / 15:17
1

Use a localização em vez de ls

find . -name '*.pdf'
    
por 15.02.2011 / 15:08