Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如果不同,则复制并重命名为日期和时间戳_Linux_Bash_Shell - Fatal编程技术网

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

Linux 如果不同,则复制并重命名为日期和时间戳,linux,bash,shell,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-

因此,我有一个文件,我想复制,如果它已被修改。我想在它的新位置将其保存为日期和时间

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

将此函数添加到~/.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

mv foo.db$(日期+%F).db
?如果你想保留扩展名,你必须将其包含在目标文件名中…@MarcB我想到了这一点,但是扩展名发生了变化,现在还不知道。您还错过了时间。@MarcB那么时间呢?您没有得到您告诉它提供的日期,因为您的示例只有%F,这也是我使用的。如果您需要不同的格式,请告诉
date
。。。