Preciso remover recursivamente todos os arquivos em todos os subdiretórios em que o nome do arquivo contém um número seguido de um 'x' seguido de um número, pelo menos duas vezes.
Exemplo:
Eu gostaria de remover esses arquivos:
'aaa-12x123-123x12.jpg'
'aaa-12x12-123x12-12x123.jpg'
Mas NÃO quero remover esses arquivos:
'aaa.jpg'
'aaa-12x12.jpg'
'aaaxaaa-123x123.jpg'
'aaaxaaa-aaaxaaa.jpg'
Como posso fazer isso (a partir do shell bash)
-delete
nem-exec rm
trabalhou para mim em Bash no Windows. Mas isso aconteceu:find /path/to/directory -type f -name '*[0-9]x[0-9]*[0-9]x[0-9]*.jpg' | xargs rm
-print0
exargs -0
, caso contrário, o comando falhará com nomes de arquivos que contenham espaços ou aspas simples. Mas-delete
e-exec rm
fazer o trabalho no Windows. Se algo não funcionar, não é devido ao seu uso.find
Verifique se o Windows possui um programa não relacionado chamado , portanto, verifique se os utilitários Unix são os primeirosPATH
.O comando certo é:
find . -type f -iregex '.*[0-9]x[0-9]*\.jpg$'
isso irá pegar apenas arquivos com nomes: 'aaa-12x12.jpg', mas não 'aaa-12x12red.jpg'
fonte