I have several files that I ftp each hour. The receiving system needs to have some sort of identifier that they came from the same batch, so I would like to append a timestamp to the filename. That alone is fairly easy, but since I want each file to have the same timestamp (so it can serve as the batch identifier), I cannot figure out how to do this.

So, I have:


And I want to have:


Any use of the date +%Y%m%d%H%M%S after the first use will obviously result in a different values in seconds, so I would like to have the first timestamp appended to the remaining files.


Just store the value of date +%Y%m%d%H%M%S in a variable:

x=$(date +%Y%m%d%H%M%S)

and later on

mv file1 file1_$x.txt
mv file2 file2_$x.txt

or in a loop for all *.txt files

for file in *.txt; do echo mv "$file" "${file%.txt}"_$x.txt; done

(remove echo if you are happy with what you see on the screen)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.