Adding timestamp to a filename with mv in BASH

前端 未结 6 1738
孤城傲影
孤城傲影 2020-12-07 15:43

Well, I\'m a linux newbie, and I\'m having an issue with a simple bash script.

I\'ve got a program that adds to a log file while it\'s running. Over time that log fi

相关标签:
6条回答
  • 2020-12-07 15:51

    The few lines you posted from your script look okay to me. It's probably something a bit deeper.

    You need to find which line is giving you this error. Add set -xv to the top of your script. This will print out the line number and the command that's being executed to STDERR. This will help you identify where in your script you're getting this particular error.

    BTW, do you have a shebang at the top of your script? When I see something like this, I normally expect its an issue with the Shebang. For example, if you had #! /bin/bash on top, but your bash interpreter is located in /usr/bin/bash, you'll see this error.

    EDIT

    New question: How can I save the file correctly in the first place, to avoid having to perform this fix every time I resend the file?

    Two ways:

    1. Select the Edit->EOL Conversion->Unix Format menu item when you edit a file. Once it has the correct line endings, Notepad++ will keep them.
    2. To make sure all new files have the correct line endings, go to the Settings->Preferences menu item, and pull up the Preferences dialog box. Select the New Document/Default Directory tab. Under New Document and Format, select the Unix radio button. Click the Close button.
    0 讨论(0)
  • 2020-12-07 15:54
    mv server.log logs/$(date -d "today" +"%Y%m%d%H%M").log
    
    0 讨论(0)
  • 2020-12-07 15:57

    You can write your scripts in notepad but just make sure you convert them using this -> $ sed -i 's/\r$//' yourscripthere

    I use it all they time when I'm working in cygwin and it works. Hope this helps

    0 讨论(0)
  • I use this command for simple rotate a file:

    mv output.log `date +%F`-output.log
    

    In local folder I have 2019-09-25-output.log

    0 讨论(0)
  • 2020-12-07 16:07

    Well, it's not a direct answer to your question, but there's a tool in GNU/Linux whose job is to rotate log files on regular basis, keeping old ones zipped up to a certain limit. It's logrotate

    0 讨论(0)
  • 2020-12-07 16:16

    A single line method within bash works like this.

    [some out put] >$(date "+%Y.%m.%d-%H.%M.%S").ver

    will create a file with a timestamp name with ver extension. A working file listing snap shot to a date stamp file name as follows can show it working.

    find . -type f -exec ls -la {} \; | cut -d ' ' -f 6- >$(date "+%Y.%m.%d-%H.%M.%S").ver

    Of course

    cat somefile.log > $(date "+%Y.%m.%d-%H.%M.%S").ver

    or even simpler

    ls > $(date "+%Y.%m.%d-%H.%M.%S").ver

    0 讨论(0)
提交回复
热议问题