Pode estar faltando something but rm /var/www/somesite/releases/*/tmp/attachment_fu/*
parece ser o que você quer. ls /var/www/somesite/releases/*/tmp/attachment_fu
pode ser usado para ver o que será excluído
Eu preciso encontrar todos os arquivos que correspondem a um determinado critério e excluí-los. Aqui está um snippet:
/var/www/somesite/releases/{many directories}/tmp/attachment_fu
Gostaria de encontrar todos os arquivos em qualquer diretório tmp/attachment_fu
e excluí-los - o problema é que {many directories}
está jogando fora minhas find
skills (ou talvez find
seja o comando errado - eu também tentou locate
sem sucesso).
ls / var / www / somesite / releases / * / tmp / attachment_fu | xargs rm -rf
algo assim?
sim, ou rm -rf / var / www / somesite / releases / * / tmp / attachment_fu
;)
Eu não estou completamente claro sobre o que você está tentando fazer - excluir arquivos correspondentes ao nome attachment_fu recursivamente, mas deixando diretórios sozinho?
Se sim, tente isso (adicionei um eco para que você possa testá-lo primeiro) ...
find /var/www/somesite/releases -type f -name attachment_fu -exec echo rm -f {} \;
Se não, por favor explique mais:)
Alternativamente, você pode usar o sinalizador -regex para descobrir se o '/ tmp /' é importante; algo como ...
find /var/www/somesite/releases -type f -regex '.*/tmp/attachment_fu$' -exec echo rm -f {} \;
Tudo isso está assumindo que os arquivos que você está procurando estão em várias profundidades na árvore do sistema de arquivos, caso contrário você pode simplesmente usar rm (postar por raio).
Além de outras respostas, você pode incorrer no erro "linha de comando longa" se estiver usando * quando o número de arquivos que você precisa excluir for muito grande.
A maneira mais segura pode ser usar a expansão do shell para recuperar a lista de diretórios, fazer um loop e usar o find para remover os arquivos:
for d in $(ls /var/www/somesite/releases/*/tmp/attachment_fu)
do
find $d -type f -exec rm {} \;
done
Isso deve funcionar muito bem, é claro que falharia se você tivesse um grande número de diretórios, mas você teria outros problemas: P
rm -rf disse o caminho que irá remover todos os dir e arquivos