Contar ficheiros por tipo numa pasta
Suponhamos que queremos saber quantos ficheiros de cada tipo existem dentro de uma pasta e todas as suas subpastas no MacOS. O sistema não oferece nenhuma maneira simples de o fazer. Poderíamos fazer isto à mão, mas rapidamente se tornaria fastidioso. Numa pesquisa pela internet encontrei uma solução elegante proposta por Peter Freitag aqui.
Usando a aplicação Terminal, escrevemos o seguinte comando substituído /some/dir
pela pasta que queremos pesquisar.
find /some/dir -type f | grep -o ".[^.]\+$" | sort | uniq -c
Este comando devolve a informação que procurávamos. Para uma explicação detalhada do comando ver o artigo original do Peter Freitag.
Este processo rapidamente se torna cansativo, porque envolve abrir o terminal escrever o nome da pasta e o comando que facilmente se pode esquecer. Seria mais simples se tivéssemos um atalho que tratasse de tudo isso por nós. O processo seria algo do género:
- Selecionar a pasta (ou pastas) no Finder que queremos pesquisar
- Clicar com o botão direito sobre a seleção e escolher a ação do menu.
- Ler a informação numa janela.
O processo descrito pode facilmente ser implementado com o Automator com os seguintes passos:
- Abrir o Automator e criar um novo documento do tipo “Ação Rápida”
- De seguida escolher “Ação Rápida” e clicar em Escolher
- Definir o processo para receber pastas como input no Finder
- Procurar pela ação “Obter valor da variável” e arrastá-la para o processo.
- Arrastar uma variável do tipo “caminho” para o campo da variável na ação anterior
- Procurar pela ação “Executar script da shell” e arrastá-la para o processo. Alterar “Fornecer a entrada” para “como argumentos”
- Escrever o seguinte comando no campo de texto do script
find "$1" -type f | grep -o ".[^.]\+$" | sort | uniq -c
- Procurar pela ação “Definir o valor da variável” e arrastá-la para o processo. Criar uma nova variável, ex.: output
- Procurar pela ação “Pedir confirmação” e arrastá-la para o processo. Arrastar a variável nova criada no passo anterior para o campo “mensagem”. Nas opções selecionar ignorar os dados resultantes desta ação.
- Finalmente, gravar a ação com o nome que queremos que surja no menu do Finder.
O processo deve parecer-se com isto:
Agora, quando selecionamos uma pasta e clicamos sobre ela com o botão direito, o menu popup contem a nossa ação em Serviços. O comando pode demorar algum tempo a mostrar os resultados se a pasta contiver muitos ficheiros.
Existem dois problemas com o comando usado: os ficheiros sem extensão são mostrados com o caminho completo, e ficheiros com extensões com letras de caixa diferente (ex: jpg e JPG) são contados como tipos de extensão diferentes.