【问题标题】:Moving a file and adding the date to the filename移动文件并将日期添加到文件名
【发布时间】:2013-07-09 23:37:40
【问题描述】:
#!/bin/bash
while read server <&3; do   #read server names into the while loop    
  if [[ ! $server =~ [^[:space:]] ]] ; then  #empty line exception
    continue
  fi   
  echo "Connecting to - $server"
  #ssh "$server"  #SSH login
  while read updatedfile <&3 && read oldfile <&4; do     
    echo Comparing $updatedfile with $oldfile
    if diff "$updatedfile" "$oldfile" >/dev/null ; then
      echo The files compared are the same. No changes were made.
    else
      echo The files compared are different.
      # copy the new file and put it in the right location
      # make a back up of the old file and put in right location (time stamp)
      # rm the old file (not the back up)
      #cp -f -v $newfile

      # ****************************
      mv $oldfile /home/u0146121/backupfiles/$oldfile_$(date +%F-%T)
      # ****************************
    fi 
  done 3</home/u0146121/test/newfiles.txt 4</home/u0146121/test/oldfiles.txt
done 3</home/u0146121/test/servers.txt

* 之间的行是我的脚本遇到问题的地方。它会输出带有日期和文件名的文件。它只使用日期。我希望两者兼得。

【问题讨论】:

    标签: bash rename mv


    【解决方案1】:

    变量名可能包含下划线,因此您不能在裸变量名之后立即使用下划线。在您的情况下,您实际上在目标文件名中使用了(未定义的)变量$oldfile_,因此新名称构造为“空字符串+日期”。将变量名放在大括号之间

    mv $oldfile /home/u0146121/backupfiles/$<b>{oldfile}</b>_$(date +%F-%T)

    并且重命名应该按预期工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多