Shell script to copy files from one location to another location and rename add the current date to every file

前端 未结 6 495
温柔的废话
温柔的废话 2021-01-30 04:46

I have a folder in my server which contains some files. These are automated that means everyday we get new files automatically which will overwrite the old ones. So want to take

相关标签:
6条回答
  • 2021-01-30 05:01

    You can be used this step is very useful:

    for i in `ls -l folder1 | grep -v total | awk '{print $ ( ? )}'`
    do
       cd folder1
       cp $i folder2/$i.`date +%m%d%Y`
    done
    
    0 讨论(0)
  • 2021-01-30 05:02
    path_src=./folder1
    path_dst=./folder2
    date=$(date +"%m%d%y")
    for file_src in $path_src/*; do
      file_dst="$path_dst/$(basename $file_src | \
        sed "s/^\(.*\)\.\(.*\)/\1$date.\2/")"
      echo mv "$file_src" "$file_dst"
    done
    
    0 讨论(0)
  • 2021-01-30 05:05

    You could use a script like the below. You would just need to change the date options to match the format you wanted.

    #!/bin/bash
    
    for i in `ls -l /directroy`
    do
    cp $i /newDirectory/$i.`date +%m%d%Y`
    done
    
    0 讨论(0)
  • 2021-01-30 05:13

    There is a proper way to split the filename and the extension: Extract filename and extension in Bash

    You can apply it like this:

    date=$(date +"%m%d%y")
    for FILE in folder1/*.csv
    do
        bname=$(basename "$FILE")
        extension="${bname##*.}"
        filenamewoext="${bname%.*}"
        newfilename="${filenamewoext}${date}.${extension}
        cp folder1/${FILE} folder2/${newfilename}
    done
    
    0 讨论(0)
  • 2021-01-30 05:14
    cp --archive home/webapps/project1/folder1/{aaa,bbb,ccc,ffffd}.csv home/webapps/project1/folder2
    rename 's/\.csv$/'$(date +%m%d%Y).csv'/' home/webapps/project1/folder2/{aaa,bbb,ccc,ffffd}.csv
    

    Explanation:

    • --archive ensures that the files are copied with the same ownership and permissions.
    • foo{bar,baz} is expanded into foobar foobaz.
    • rename is a commonly available program to do exactly this kind of substitution.

    PS: don't use ls for this.

    0 讨论(0)
  • 2021-01-30 05:16

    In bash, provided you files names have no spaces:

    cd /home/webapps/project1/folder1
    for f in *.csv
    do 
       cp -v "$f" /home/webapps/project1/folder2/"${f%.csv}"$(date +%m%d%y).csv
    done
    
    0 讨论(0)
提交回复
热议问题