Para desenvolver um software é necessário desenvolver ferramentas de testes e assim, mais softwares são desenvolvidos.
Ao executar o comando find procurando arquivos *.JPG e *.jpg, obtém-se como resposta 633 arquivos.
O problema era o fato do software informar 579 arquivos de imagens. A diferença é 54 unidades.
O primeiro passo é comparar as duas listagens de arquivos e entender o que torna o conteúdo distinto. Como o pen-drive é do tipo VFAT, não tinha permissão para executar scripts, então a solução foi usar a linha de comando e direcionar a saída para um arquivo:
$ ls -R | grep '\./' | cut -c 3- | sed 's/://g' > ~/programas/arq2.txt
Em seguida foi feita uma ordenação no arquivo arq2.txt que a saída foi para arq633.txt:
$ cat arq2.txt | sort > arq633.txt
O arquivo arq633.txt contém 633 linhas e cada uma delas o nome do arquivo *.jpg ou *.JPG
O arquivo com as 579 linhas foi gerado pelo software que estou desenvolvendo. É preciso usar o editor vim para eliminar colunas como data, tamanho do arquivo etc.
O script que levanta quais são os arquivos que diferem está abaixo.
#!/bin/bash ls repeated_files.txt > /dev/null if [ $? = 0 ] then rm repeated_files.txt fi for i in `seq 633` do arq633=`head -n $i arq633.txt | tail -n 1` freq=`grep "$arq633" arq633.txt | wc -l | awk '{printf "%s\n",$1}'` if [ $freq != 1 ] then grep ^"$arq633" arq633.txt >> repeated_files.txt fi done cat repeated_files.txt | sort | uniq
Comento sobre a linha
grep ^"$arq633" arq633.txt >> repeated_files.txt
Sem o circunflexo (^) não há distinção para a ocorrência
1.jpg baixa11.jpg baixa1.jpg CIMG3701.jpg CIMG3711.jpg CIMG3751.jpg CIMG4531.jpg
porque o grep encontra "1.jpg" em todos os arquivos.
Executando o script obtém-se a seguinte saída:
1.jpg DSC07857.JPG DSC07858.JPG DSC07859.JPG DSC07861.JPG DSC07862.JPG DSC07863.JPG DSC07864.JPG DSC07865.JPG DSC07866.JPG DSC07867.JPG DSC07868.JPG DSC07869.JPG DSC07870.JPG DSC07871.JPG DSC07872.JPG DSC07873.JPG DSC07874.JPG DSC07875.JPG DSC07876.JPG DSC07877.JPG DSC07878.JPG DSC07879.JPG DSC07880.JPG DSC07881.JPG DSC07882.JPG DSC07883.JPG DSC07884.JPG DSC07885.JPG DSC07886.JPG DSC07887.JPG DSC07888.JPG DSC07889.JPG DSC07890.JPG DSC07891.JPG DSC07892.JPG DSC07893.JPG DSC07894.JPG DSC07895.JPG DSC07896.JPG DSC07897.JPG DSC07898.JPG DSC07899.JPG DSC07900.JPG DSC07901.JPG DSC07902.JPG DSC07903.JPG DSC07904.JPG DSC07905.JPG DSC07906.JPG DSC07907.JPG DSC07908.JPG DSC07909.JPG DSC07910.JPG
Que são 54 arquivos JPG.
Conclusão: O software processa 633 imagens, mas como há nomes repetidos, 54 são sobreescritos mostrando 579 arquivos JPG/jpg.
Caso encerrado!