Como comparar arquivos duplicados no mesmo diretório e hardlink-los juntos

0

Eu tenho uma variável que eu usei para representar arquivos duplicados encontrados em um determinado diretório

ddub='find $1* -not -empty -type f -printf "%s\n" | sort -rn | uniq -d | xargs -I{} find -type f -size {}c -print0 '

Em seguida, passei por este diretório para comparar o link físico a quaisquer duplicatas do arquivo original, bem

echo $ddub                              #Print the results

for i in $ddub; do
    for j in $ddub ; do
    if cmp -s "$i" "j" ; then
         ln $i $j
    elif ; 
         echo "csnt hardlink the files"
    fi

O problema aqui é que ele tenta linkar todos os arquivos da lista que não funcionam como eu gostaria. Eu gostaria de separar os arquivos exclusivos dos demais e depois vinculá-los.

Como eu faço loop adicional sobre isso, de modo a vincular apenas arquivos MD5sum similares encontrados na lista ou arquivos com o mesmo tamanho?

os resultados que recebo são os seguintes, que é apenas a lista de todos os arquivos que eu criei. por favor me ajude a descobrir como posso separá-los ainda mais (note que acabei de criar arquivos aleatórios)

ln ./test_dir/test_dir2/29.JPG.copy.copy.copy.copy./test_dir/test_dir2/29.JPG.copy.copy.copy./test_dir/test_dir2/29.JPG.copy.copy.copy.copy.copy./test_dir/29.JPG./test_dir/29.JPG.copy./test_dir/29.JPG.copy.copy./test_dir/test_dir2/23.JPG.copy.copy.copy.copy./test_dir/test_dir2/23.JPG.copy.copy.copy.copy.copy./test_dir/09.JPG.copy./test_dir/09.JPG./test_dir/09.JPG.copy.copy./test_dir/39.JPG./test_dir/39.JPG.copy./test_dir/test_dir2/22.JPG.copy.copy.copy.copy./test_dir/test_dir2/22.JPG.copy.copy.copy.copy.copy./test_dir/test_dir2/22.JPG.copy.copy.copy./test_dir/22.JPG./test_dir/22.JPG.copy.copy./test_dir/22.JPG.copy ./test_dir/test_dir2/29.JPG.copy.copy.copy.copy./test_dir/test_dir2/29.JPG.copy.copy.copy./test_dir/test_dir2/29.JPG.copy.copy.copy.copy.copy./test_dir/29.JPG./test_dir/29.JPG.copy./test_dir/29.JPG.copy.copy./test_dir/test_dir2/23.JPG.copy.copy.copy.copy./test_dir/test_dir2/23.JPG.copy.copy.copy.copy.copy./test_dir/09.JPG.copy./test_dir/09.JPG./test_dir/09.JPG.copy.copy./test_dir/39.JPG./test_dir/39.JPG.copy./test_dir/test_dir2/22.JPG.copy.copy.copy.copy./test_dir/test_dir2/22.JPG.copy.copy.copy.copy.copy./test_dir/test_dir2/22.JPG.copy.copy.copy./test_dir/22.JPG./test_dir/22.JPG.copy.copy./test_dir/22.JPG.copy
[asonganyif@ccad2 November_2016]$ vim bashScripass.sh
    
por Fontem Ryan Asonganyi 26.01.2017 / 22:11

1 resposta

4

Você não pode comparar arquivos com [ a = b ] . Use cmp :

if cmp -s "$i" "$j"; then
# rest as you were
    
por 27.01.2017 / 08:58