Sl recursivo com condições


16

Por que não consigo 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 excluiria todos esses arquivos?

Respostas:


22

Por que não consigo usar um comando como esse para encontrar todos os arquivos pdf em um diretório e subdiretórios?

O curinga *.pdfem seu comando é expandido bashpara todos os arquivos correspondentes no diretório atual, antes de executar ls.


Como eu faço isso? (Estou usando o bash no ubuntu)

encontrar é a sua resposta.

find . -name \*.pdf

é uma listagem recursiva de arquivos pdf. -inameé uma correspondência que não diferencia maiúsculas de minúsculas, então

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 encontrar 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ê deseja remover os arquivos encontrados com o find, você pode usar

find . -iname \*.pdf -delete

1
Apenas no caso de você querer uma saída semelhante ao ls -lcomando, mostrando o tamanho do arquivo, a propriedade, a data, etc., você pode usar findcom a -lsopção, por exemplofind . -name \*.pdf -ls
RFVoltolini

2

Como outros já disseram, encontrar é a resposta.

Agora, para responder a outra parte.

  • Como eu excluiria todos esses arquivos?

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

Deveria fazê-lo.


2
Você precisa citar seu glob para evitar que ele seja expandido prematuramente.
Pausado até novo aviso.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.