2016-08-03 76 views
0

目錄結構導航目錄和子目錄和使用shell

MyDirectory 

    -data/ 

    -DATA-TT_20160714_soe_test_testbill_52940_1.lst 

    -output/ 

    -DATA-TT_20160714_soe_test_testbill_52940_1.pdf 

    -Backup/ 

enter code here 
    #!/bin/bash 
    for i in $(ls); do 
     echo $i 
       #cd $i 
       #cd $i/data/ 
       echo $i 
      cd $i/data/ 
       echo $i/data/ 
      $(ls *1.lst) 
     cd ../output 
    $(ls *1.pdf) 
     done 
  1. 我需要的目錄和地方 的 輸入和輸出文件被保存在子目錄瀏覽移動的文件。這些文件有我需要與當前日期進行比較的YYYYMMDD格式的日期爲 。 如果差異大於1個月,我需要將這些文件壓縮到 並將它們移動到備份目錄。 「DATA-TT」部分 是恆定的。
    誰能幫我在this.There可能是許多目錄具有相同的子目錄structure.Example MyDirectory1,MyDirectory2,MyDirectory3

回答

0

不得不離開了會議。我會離開你的腳本中,我一直在努力幫助您:

#!/bin/sh 

    # in your case filename would be the variable used in the for loop 
    filename=$(find DATA-TT*) 
    # Part gets the date from the filename 
    part=$(echo $filename | grep -Eo '[[:digit:]]{8}') 
    echo "$filename -> $part" 
    # limit_date is current date -30 days 
    limit_date=$(date +'%Y%m%d' -d "now 30 days") 
    echo $cur_date 
    # this part compares and echoes, you can try it and replace echoes with ziping, moving, etc. 
    if [ $part -ge $limit_date ] 
    then 
      echo "part is older than 1 month" 
    else 
      echo "part had not yet reached 1 month age" 
    fi 
0

這一個數據目錄相同的輸出

#!/bin/bash 
list=($(find data -name "DATA-TT_*")) 
limit=`date +%Y%m%d -d "-30 days"` 
for i in ${list[@]}; do 
    filedate=$(echo $i| cut -d'_' -f 2) 
    if [ "$limit" -gt "$filedate" ]; then 
     mv $i backup 
    fi 
done