2016-08-03 32 views
0

VerzeichnisstrukturNavigation Verzeichnisse und Unterverzeichnisse und Bewegen der Dateien 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. Ich brauche in den Verzeichnissen und Unterverzeichnissen zu navigieren, in dem die Ein- und Ausgabedateien gehalten verwenden. Diese Datei hat Datum im JJJJMMTT-Format, das ich mit dem aktuellen Datum vergleichen muss. Wenn der Unterschied größer als 1 Monat ist, muss ich diese Dateien zippen und sie in das Backup-Verzeichnis verschieben. Der "DATA-TT" Teil ist konstant.
    Kann mir jemand in this.There hilft für ein Treffen viele Verzeichnisse mit dem gleichen Unterverzeichnis structure.Example MyDirectory1, MyDirectory2, MyDirectory3

Antwort

0

Haben verlassen können. Ich werde Sie das Skript lasse ich gearbeitet habe, Ihnen zu helfen:

#!/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

Dieses ist für das Datenverzeichnis das gleiche für die Ausgabe

#!/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