Сравните размер файла нескольких файлов в массиве

Сценарий: на сайте Ftp имеется 100 файлов. Один раз в день все файлы .gz копируются на сайт AWS, а затем переименовываются. В имени файла сохраняется только дата.

Некоторые файлы повреждены во время копирования. Файл txt был доставлен с моментальным снимком ВСЕХ файлов и атрибутов с FTP-сайта.

  • Как запустить bash на CYGWIN
  • Подстановка команд против перенаправления ввода-вывода?
  • Почему здесь-документы пытаются заменить подстановку оболочки даже на комментируемой строке?
  • Добавление нескольких пользователей в группу UNIX в одной строке
  • Копирование только новых файлов
  • bash script autobeautifiying с использованием declare -f
  • Я должен написать сценарий, который будет

    1. читать текстовый файл только для файлов .gz
    2. конвертировать имя файла в имя файла на сайте S3
    3. Сравните размер файла с txt-файлом с размером файла на сервере S3
    4. Если размеры файлов не совпадают, напишите имя файла и процентное различие с txt-файлом.

    Это то, что я до сих пор, что даже близко не работает

    Предложения ?:

    # 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 

  • sudo over ssh: нет tty настоящего и не запрошена программа askpass
  • переименовывать файлы с помощью команды rename
  • Проверьте, содержит ли текст символы, отличные от ASCII, в сценарии оболочки
  • sh + как использовать массив в sh-скрипте для печати всех значений в массиве
  • Разверните вывод последних двух команд
  • сценарий оболочки, чтобы присоединиться к 2 файлам на основе 2 столбцов, и если совпадение найдено, напишите несколько полей
  • One Solution collect form web for “Сравните размер файла нескольких файлов в массиве”

    + Изменить

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

    чтобы:

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

    Это исправит часть «Это не работает» вашего скрипта.

    Изменить:

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

    в

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

    (Обратите внимание, что в дополнение к меткам кавычек ваше исходное имя переменной здесь неверно – fiesize2 сравнивается с file2size )

    Linux и Unix - лучшая ОС в мире.