Eu tenho uma pasta chamada img
, esta pasta tem muitos níveis de subpastas, todas contendo imagens. Vou importá-los para um servidor de imagem.
Normalmente, as imagens (ou qualquer arquivo) podem ter o mesmo nome, desde que estejam em um caminho de diretório diferente ou em uma extensão diferente. No entanto, o servidor de imagem para o qual estou importando exige que todos os nomes de imagens sejam exclusivos (mesmo que as extensões sejam diferentes).
Por exemplo, as imagens background.png
e background.gif
não seriam permitidas porque, embora tenham extensões diferentes, ainda têm o mesmo nome de arquivo. Mesmo se estiverem em subpastas separadas, ainda precisam ser exclusivas.
Por isso, estou pensando se posso fazer uma pesquisa recursiva na img
pasta para encontrar uma lista de arquivos com o mesmo nome (excluindo a extensão).
Existe um comando que pode fazer isso?
fonte
Respostas:
O FSlint é um localizador duplicado versátil que inclui uma função para encontrar nomes duplicados:
O pacote FSlint para Ubuntu enfatiza a interface gráfica, mas como é explicado nas Perguntas frequentes do FSlint, uma interface de linha de comando está disponível através dos programas em
/usr/share/fslint/fslint/
. Use a--help
opção para documentação, por exemplo:Exemplo de uso:
fonte
ls -l
para formatar sua saída. Esta pergunta deve explicar o que as cores significam.Como o comentário afirma, isso também encontrará pastas. Aqui está o comando para restringi-lo aos arquivos:
fonte
uniq
não fornece um recurso para selecionar um delimitador de campo diferente.sed
obsoleto? Arcano? Certo. Obsoleto? Não que eu saiba. (E eu só procurou a seleção.)Salve isso em um arquivo chamado
duplicates.py
Em seguida, torne o arquivo executável:
Execute, por exemplo, o seguinte:
Ele deve gerar pares de arquivos com o mesmo nome de base (1). Escrito em python, você deve poder modificá-lo.
fonte
P001.ORF
eP001 (1).ORF
é duplicado e também parece pensar que 60% dos meus arquivos são duplicados, o que está errado, tenho certeza.fslint
encontrou um número realístico de nomes de arquivos duplicados que é próximo de 3%.Suponho que você só precise ver essas "duplicatas" e manipulá-las manualmente. Nesse caso, esse código bash4 deve fazer o que você deseja, eu acho.
Consulte http://mywiki.wooledge.org/BashGuide/Arrays#Associative_Arrays e / ou o manual do bash para obter ajuda sobre a sintaxe da matriz associativa.
fonte
Este é bname:
Torne executável:
Invoque-o:
Pró:
Vigarista:
fonte
Melhoria no script de loevborg, para minhas necessidades (inclui saída agrupada, lista negra, saída mais limpa durante a digitalização). Eu estava digitalizando uma unidade de 10 TB, então precisava de uma saída um pouco mais limpa.
Uso:
python duplicates.py DIRNAME
duplicates.py
fonte