Bash скрипт для String concat двух переменных и сравнения файлов - PullRequest
0 голосов
/ 01 апреля 2020

я пытаюсь добиться того, чтобы удалить существующие имена файлов (имя файла + modfiedtimestamp) в Src_Dir1 и Src_Dir2

Итак, сначала я попытался развернуть все имена файлов в tempa (Src_Dir1) и tempb (Src_Dir2 ) соответственно.

Ниже приведен скриншот исходной директории.

source directory

Файлы внутри архива должны быть такими же, и несколько файлов снаружи тоже ..

files inside archive

Итак, сначала я хочу иметь дело с файлами внутри Архива (SRC_Dir1) и позже вне Архива (SRC_Dir2), что я пытаюсь для этого нужно использовать while l oop, чтобы прочитать каждое имя файла и строку, совпадающие с измененной временной меткой (mtime) и ввести значение temp c (как, например, это должно быть похоже на AirTimeActs_2018-12-03 .csv + 2019-01-24 14: 41: 53.000000000 -0500 = AirTimeActs_2018-12-03.csv_2019-01-24 14: 41: 53.000000000 -0500 это то, как оно должно генерироваться в temp c файл для каждого файла внутри архива ( SRC_Dir1). Вот где я застрял в разделе переменных строки concat о том, как действовать. Пожалуйста, помогите мне с кодом, надеюсь, что я понятен.

ВАЖНО

(Очень признателен, если вы поможете мне с расширением кода, который у меня есть не упомянуто здесь и еще не достигнуто, что -> Нужно реализовать тот же код (который я пытаюсь сделать для tempa, я бы тоже хотел сделать это для tempb и назвать его как tempd), а затем сделать файл данных сравните между temp c и tempd), если существует какое-либо имя файла данных того же типа, затем удалите файл, существующий в Src_Dir2, если файла с тем же именем файла нет, ничего не делайте.)

 #!/bin/bash
    Src_Dir1=path/Airtime_Activation/Archive
    Src_Dir2=path/Airtime_Activation/

    find "$Src_Dir1" -maxdepth 1 -name "*.xlsx" -o -name "*.csv" | sed "s/.*\///" > -print>path/Airtime_Activation/temp_a
    find "$Src_Dir2" -maxdepth 1 -name "*.xlsx" -o -name "*.csv" | sed "s/.*\///" > -print>path/Airtime_Activation/temp_b

    echo 'phase1'
    cat path/Airtime_Activation/temp_a | while read file; 
    do
        echo 'phase1.5'
        echo "$file"
        echo 'phase2'
        mtime=$(stat -c '%y' $file)
        Full_name=${file}_${mtime}
        echo "$Full_name" >> path/Airtime_Activation/temp_c
        echo 'phase3'

    done

1 Ответ

0 голосов
/ 02 апреля 2020
#!/bin/bash
    Src_Dir1=path/Airtime_Activation/Archive
    Src_Dir2=path/Airtime_Activation/

    find "$Src_Dir1" -maxdepth 1 -name "*.xlsx" -o -name "*.csv" | sed "s/.*\///" > -print>path/Airtime_Activation/temp_a
    find "$Src_Dir2" -maxdepth 1 -name "*.xlsx" -o -name "*.csv" | sed "s/.*\///" > -print>path/Airtime_Activation/temp_b

    echo 'phase1'
    cat path/Airtime_Activation/temp_a | while read file; 
    do
        echo 'phase1.5'
        echo "$file"
        echo 'phase2'
        mtime=$(stat -c '%y' $file)
        Full_name=${file}_${mtime}
        echo "$Full_name" >> path/Airtime_Activation/temp_c
        echo 'phase3'

    done

cat /path/Airtime_Activation/temp_b | while read file
#while IFS="" read -r -d $'\0' file; 

do
    #echo "$file"
    echo 'phase2'
    mtime=$(stat -c '%y' $Src_Dir2/$file)
    Full_name=${file}_${mtime}
    echo "$Full_name" >> path/temp_d
    echo 'phase3'

done


#file compare and delete old files from outisde archive
grep -Ff temp_d temp_c > path/Airtime_Activation/temp_e
cat path/Airtime_Activation/temp_e | while read file
#while IFS="" read -r -d $'\0' file; 

do
    #echo "$file"
    echo 'phase2'
    echo "${file%_*}"
    rm $Src_Dir2/${file%_*}
    echo 'phase3'

done
...