Bash脚本将String连接两个变量并进行文件比较

问题描述 投票:0回答:1

我想要实现的是,删除Src_Dir1和Src_Dir2中相同的文件名(filename + modfiedtimestamp)exisitng

因此,我首先尝试将所有文​​件名分别部署到tempa(Src_Dir1)和tempb(Src_Dir2)。

下面是源目录的屏幕快照。

source directory

存档内的文件就是这样,外面的文件也很少..

files inside archive

因此,最初,我想处理Archive(SRC_Dir1)内的文件,后来要处理Archive(SRC_Dir2)以外的文件,我想做的是使用while循环读取修改后的时间戳的每个文件名和字符串concat (mtime)并输入到tempc(例如,它应该像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对于存档(SRC_Dir1)中的每个文件名,应将其生成为tempc文件。在这里,我被困在字符串concat变量部分中,以继续进行操作。帮助我提供代码,希望我能理解。

重要

((非常感谢,如果您帮助我扩展代码的扩展,我在这里没有提到,但现在仍要实现->必须实现相同的代码(我正在尝试为tempa做代码,我也想为tempb做它,并将其命名为tempd),然后在tempc和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
bash variables unix string-comparison string-concatenation
1个回答
0
投票
#!/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
© www.soinside.com 2019 - 2024. All rights reserved.