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

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

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

Todos os arquivos estão abaixo /homee possuem esta 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 /home/{username}/domains/pastas possuem várias subpastas de domínio.

Responder1

Você tentou

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

?

Atenção: 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 irá excluí-lo também. Isso é um problema?

PS A menos que você esteja perguntando se as duas ocorrências de {domain1}correspondência são o que você está perguntando, ou se há algo mais que está faltando, esta pergunta não é sobre expressões regulares (regexs). Quando *, ?, e [(com uma correspondência ]) são usados ​​na linha de comando do shell, eles são chamadoscuringas.

Responder2

Em /homeexecute o seguinte comando

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

Antes de canalizar o resultado, xargsexecute-o find . -name 'awstas*.confsozinho para verificar se ele lista apenas os arquivos que você deseja remover. Canalize para xargs rmsomente depois de confirmar isso.

O findquando usado conforme mostrado acima procurará recursivamente por arquivos que correspondam ao regex especificado. Para obter mais informações, verifique as páginas de manual de find e xargs.

informação relacionada