Remove arquivos em um diretório com base no nome parcial

3

Eu queria saber qual é a melhor maneira de remover qualquer arquivo, independentemente de sua extensão ser baseada em um nome parcial.

Exemplo:

13-05-12_foo_something.jpg
13-06-01_something.png
13-05-05_foo_site.html

rm tudo em um diretório e dentro das subpastas com _foo_ no nome.

    
por DᴀʀᴛʜVᴀᴅᴇʀ 13.09.2013 / 20:37

2 respostas

3

A maneira mais simples:

cd /path/to/directory
rm *_foo_*

ou

rm /path/to/directory/*_foo_*

O asterisco ( * ) corresponde a todos os caracteres.

Para obter explicações sobre o que está sendo feito, use a opção rm with -v . Para ser avisado antes de cada remoção, use a opção rm with -i :

rm -vi *_foo_*

Veja man rm para mais informações.

    
por Radu Rădeanu 13.09.2013 / 20:43
1

Se você quiser fazer isso em todos os subdiretórios também, a maneira mais fácil é habilitar a opção do shell globstar:

shopt -s globstar
rm **/*foo_*

Deve haver uma linha comentada (por exemplo, começando com # ) no padrão ~/.bashrc (linha 29 na minha):

# shopt -s globstar extglob

Descomente essa linha e você terá acesso a alguns recursos do bash .

    
por evilsoup 13.09.2013 / 21:18