Use find /some/dir -printf '%f\t%p\n > files<N>.lst'
ou alguma variante dele para encontrar os arquivos nas árvores e, em seguida, join -j 1 files1.lst files2.lst
para combinar as listagens de arquivos em uma única saída.
No debian / ubuntu eu quero:
a) crie uma lista de todos os arquivos em uma árvore de diretórios |
b) faça o mesmo para uma segunda árvore de diretórios |
c) compare as duas listas de modo que, apenas o arquivo NAMES seja comparado (isto é, apenas comparando a parte "file.txt" para que "/home/folder/file.txt" == "/ home / secondfolder / folder / file. txt)
d) produzir uma lista de todos os duplicados
alguém pode explicar como fazer isso usando linguagens de script ou regex ou algo assim?
Use find /some/dir -printf '%f\t%p\n > files<N>.lst'
ou alguma variante dele para encontrar os arquivos nas árvores e, em seguida, join -j 1 files1.lst files2.lst
para combinar as listagens de arquivos em uma única saída.
Aqui está um exemplo que funciona com [t] csh, sh, etc., empregando 'find', 'awk', 'sort', 'uniq' e um / bin / sh one-liner para executar ' md5sum 'para obter a assinatura de cada arquivo. Com a lista de assinaturas para os arquivos de ambas as estruturas de diretórios, a seqüência de comandos retornará os arquivos que são os mesmos:
find a/ b/ -type f -exec md5sum {} \; > /tmp/list; awk '{print $1}' ' | awk '{print $2}' | sh -c 'while read s; do awk "/^$s/ { print \}" /tmp/list; echo; done'
Essencialmente, isso gera o md5sum para todos os arquivos no diretório 'a' e no diretório 'b'. As strings hexadecimais (primeira coluna) são enviadas para um pipeline filtrando instâncias de apenas uma única ocorrência para uma determinada soma de verificação, passando o restante para um / bin / sh iterator que extrai todos os arquivos reais que correspondem à soma de verificação (e inserindo o linha em branco entre os grupos.)
Ele separa os agrupamentos de duplicatas por uma linha em branco. Isso oferece a vantagem óbvia (acima e além da solicitação original) de encontrar arquivos duplicados que tenham o mesmo conteúdo, mas diferentes nomes de arquivos.