如果不同则复制并重命名为日期和时间戳

时间:2016-01-12 19:37:51

标签: linux bash shell

所以我有一个我想要复制的文件,如果它被修改了。我想把它作为日期和时间保存在它的新位置。

mv my_file.db $(date +%F)

此命令将移动它并将日期设置为名称,但它会删除扩展名。我有3个不同的文件扩展名我想移动。我也希望有时间戳,因为我每天会复制多次。

输入:

sdfgdg.a
abdfgs.b
dfgdfg.c

所以通过运行......

mv * ../Folder

应该产生:

Folder/sdfgdg-2015-01-02-14:50:00.a
Folder/abdfgs-2015-01-02-14:50:00.b
Folder/dfgdfg-2015-01-02-14:50:00.c

1 个答案:

答案 0 :(得分:0)

将此函数添加到您的〜/ .bashrc并将其(source ~/.bashrc)来源或使用第二个会话登录。

function mymv() {
  if [[ $# -lt 2 ]]; then
     echo "Syntax error: missing aruments"
     return 1
  fi

  target="${@: -1}"     # last argument
  d="$(date +%F-%T)"

  while [[ $# -ge 2 ]]; do
    file="$1"
    mv -v "$file" "$target/${file%.*}-$d.${file##*.}"
    shift
  done
}

用法:

mymv file ... directory

示例:

mymv * ../Folder