Excluir todas as imagens em uma pasta, exceto aquelas com sequência definida no título?

0

Eu tenho cerca de 50.000 imagens em uma pasta (estou usando o Mac OSX) e gostaria de excluir todas, a menos que tenham x300 ou 300x . Eu esperava que fosse possível usar o terminal ou o automator, mas não tenho idéia de como fazê-lo!

Obrigado!

Carl Bembridge
fonte

Respostas:

0

Com o terminal, há muitas maneiras de fazer isso. Uma opção é usar o find (1):

find /your/dir -type f \! -name 'x300' \! -name '300x' -exec echo rm -f {} \;

Substitua /your/dirpelo local onde estão seus arquivos. Quando tiver certeza absoluta de que o comando find atinge apenas os arquivos que você realmente deseja excluir com rm , remova "echo" da parte exec e execute novamente para remover arquivos, em vez de imprimir quais arquivos serão removidos.

Algumas explicações:
find / your / dir localiza todos os arquivos e pastas em / your / diir ans abaixo.
-type f filtra apenas os arquivos
-namename x300filtra apenas os itens que contêm x300 no nome do arquivo.
O ! inverte isso (apenas arquivos NÃO contendo).

-exec executa um comando. Você pode executar eco, ou você poderia -print.
Você pode usar rm como comando para excluir ou -deleteusar a construção de achados.

{}é o nome do arquivo atual. Se você usar \;, {} será substituído por um nome de arquivo por vez. (portanto, se você tiver 10000 arquivos para removê-lo, iniciará uma nova rm 10000 vezes).

Você também pode substituí-lo por +para obter muitos arquivos de uma só vez (embora -delete seja ainda mais eficiente).

Sami Laine
fonte
Olá! Muito obrigado pela sua resposta, tenho tentado fazê-lo funcionar (e resolvido por mim mesmo!), Mas não está se comportando como acho que deveria ... estou usando o comando find / Users / Carl / Desktop / LTW - tipo f \! -name 'x300' \! -name '300x' -exec echo rm -f {} \; mas está retornando todos os arquivos do que eu posso ver, por exemplo, o terminal ecoou rm -f /Users/Carl/Desktop/LTW/zz-top-texicali-ep-review-300x225.jpg que deve ser excluído por causa de o 300x225 certo? Você consegue identificar onde estou sendo burro? Desde já, obrigado!
Carl Bembridge