Exclui todas as imagens de uma pasta, exceto aquelas com string definida no título?

0

Tenho cerca de 50.000 imagens em uma pasta (estou usando o Mac OSX) e gostaria de excluir todas elas, a menos que tenham x300 ou 300x neles. Eu esperava que fosse possível usar o terminal ou o automador, mas não tenho a menor ideia de como fazer isso!

Obrigado!

    
por Carl Bembridge 02.02.2016 / 13:39

1 resposta

0

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

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

Substitua /your/dir pelo local onde seus arquivos estão. Quando tiver certeza absoluta de que os comandos encontrar somente os arquivos que você deseja excluir com rm , remova "echo" da parte exec e reexecute para remover arquivos, em vez de imprimir quais arquivos serão removidos.

Algumas explicações:
find / your / dir encontra todos os arquivos e pastas em / your / diir ans abaixo.
tipo-f filtros para somente arquivos
-name x300 filter apenas para itens que contenham x300 no nome do arquivo.
O ! inverte isso (apenas os arquivos que NÃO contêm).

-exec executa um comando. Você pode exec echo, ou você poderia -print deles.
Você pode usar rm como comando para excluir ou -delete para usar a construção de localizações.

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

Você também pode substituir isso com + para obter muitos arquivos de uma só vez (embora -elete seja ainda mais eficiente).

    
por 02.02.2016 / 17:16