Removendo arquivos específicos recursivamente usando rm ou algo simples?

1

Eu tenho uma pasta raiz com um arquivo de texto chamado pairs.txt.

Dentro dessa pasta-raiz existem outras pastas com arquivos de texto chamados pairs.txt.

Existe uma maneira simples de removê-los usando rm ?

Eu sei que eu poderia usar find . -name 'pairs.txt' -exec rm {} \; , mas gostaria de saber de outras maneiras, talvez usando * ou algum outro caractere curinga?

Eu tentei usar rm -rf pairs.txt , mas parece remover apenas o pairs.txt no diretório atual.

    
por ishikun 01.08.2013 / 08:46

2 respostas

3

Com o bash 4 +:

shopt -s globstar dotglob
rm -- **/pairs.txt

A opção globstar faz com que ** corresponda a qualquer número de níveis de diretório. A opção dotglob faz com que inclua diretórios cujo nome começa com . (arquivos de pontos).

Com ksh93, use set -o globstar em vez de shopt -s globstar . Para obter o efeito de dotglob , use FIGNORE= .

Com zsh, use a segunda linha diretamente. Para incluir arquivos de pontos, execute setopt glob_dots primeiro ou crie a segunda linha rm -- **/pairs.txt(D) .

Observe que ** do bash segue links simbólicos para diretórios. Ksh's e zsh's não.

    
por 01.08.2013 / 08:53
-2

ls -1R / | grep -e "/pairs.txt$" | xargs rm

    
por 01.08.2013 / 08:54