Compare o tamanho do arquivo de vários arquivos em uma matriz [closed]

3

cenário: O site do Ftp tem centenas de arquivos. Uma vez por dia, todos os arquivos .gz são copiados para um site da AWS e renomeados. Apenas a data é mantida no nome do arquivo.

Alguns dos arquivos corrompidos durante a cópia. Um arquivo txt foi entregue com um instantâneo de TODOS os arquivos e atributos do site FTP.

Eu tenho que escrever um script que irá

  1. leia o arquivo de texto apenas para arquivos .gz
  2. converta o nome do arquivo no nome do arquivo no site da S3
  3. Compare o tamanho do arquivo do arquivo txt com o tamanho do arquivo no servidor S3
  4. Se os tamanhos dos arquivos não corresponderem, escreva o nome do arquivo e a porcentagem de diferenças em um arquivo txt.

Isso é o que eu tenho até agora, o que não está nem perto de funcionar

Sugestões?:

# Create array from files in FTP site text file
    f=cat ftpfiles.txt | grep .gz | awk '{print $9,$5}' #this doesn't work

# Start ForEach loop for files in created array
    for f in *.gz
        do
    # Create variable for file size of source file
        file1size=$( cat $f | wc -c )

    # Create variable for file size of destination file
        fiesize2=aws s3 ls s3://folder1/folder2/$f | awk '{print $3}'

    #Compare sizes and print result to .txt file by percent diff
        echo "$f"

        if [ $file1size -lt $file2size ]; then
          size=$file1size
        else
            size=$file2size
        fi

        dc -e "
        3k
        $( cmp -n $size -l $file1 $file2 | wc -l )
        $size
        /
        100*
        p"

#close loop 
    done
    
por GreetRufus 05.08.2014 / 21:54

1 resposta

1

Alterar

f=cat ftpfiles.txt | grep .gz | awk '{print $9,$5}'

para:

f='cat ftpfiles.txt | grep .gz | awk '{print $9,$5}''

Isso consertará a parte "Isso não funciona" do seu script.

Alterar:

fiesize2=aws s3 ls s3://folder1/folder2/$f | awk '{print $3}'

para

file2size='aws s3 ls s3://folder1/folder2/$f | awk '{print $3}''

(Observe que, além das marcas de aspas, o nome da variável original está errado aqui - fiesize2 comparar com file2size )

    
por 06.08.2014 / 01:12