Usando curinga para localizar (e excluir) arquivos correspondentes em uma caixa do Linux

0

Eu quero excluir um arquivo de configuração específico do Awstats para todos os usuários da caixa. Qual é a melhor maneira de excluí-los e, possivelmente, em uma linha?

Todos os arquivos estão em /home e têm essa estrutura:

/home/{username1}/domains/{domain1}/public_html/awstats/.data/awstats.{domain1}.conf
/home/{username1}/domains/{domain2}/public_html/awstats/.data/awstats.{domain2}.conf

/home/{username2}/domains/{domain1}/public_html/awstats/.data/awstats.{domain1}.conf

Algumas pastas /home/{username}/domains/ têm várias subpastas de domínio.

    
por lemimique 04.01.2013 / 00:43

2 respostas

1

Você já tentou

rm /home/*/domains/*/public_html/awstats/.data/awstats.*.conf

?

Aviso: se houver um arquivo cujo nome seja algo como

/home/phred/domains/sci-fi/public_html/awstats/.data/awstats.fantasy.conf

Ou seja, as duas ocorrências de {domain1} não correspondem, então o comando acima também o excluirá. Isso é um problema?

P.S. A menos que você confirme que as duas ocorrências de {domain1} coincidem com o que você está perguntando, ou há algo mais que está faltando, essa pergunta não é sobre expressões regulares (regexs). Quando * , ? e [ (com ] correspondentes) são usados na linha de comando da shell, eles são chamados de curingas .

    
por 04.01.2013 / 01:04
0

Em /home , execute o seguinte comando

find . -name 'awstats*conf' | xargs rm

Antes de enviar o resultado para xargs , execute o find . -name 'awstas*.conf para verificar se ele lista apenas os arquivos que você deseja remover. Canalize para xargs rm somente depois de confirmar que está.

O find , quando usado como mostrado acima, procurará recursivamente por arquivos que correspondam ao regex especificado. Para mais informações, consulte as man pages para find e xargs.

    
por 04.01.2013 / 01:02