编写一个bash脚本,将文件复制到新副本具有相同名称但在文件名后附加时间戳的目录(扩展名之前)。
我怎样才能做到这一点?
答案 0 :(得分:1)
将文件本身的时间戳插入原始文件名,并在目标文件中保留该时间戳,以下内容适用于GNU环境:
file="/some/dir/path-to-file.xxx"; cp -p "$file" "${file%.*}-$(date -r"$file" '+%Y%m%d-%H%M%S').${file##*.}"
在mix中正确使用basename(1)命令可以将文件复制到另一个目录中。
在GNU / Linux环境之外执行此操作更具挑战性,您必须开始访问awk,perl,python甚至php等语言来替换date -r
命令。
答案 1 :(得分:0)
假设
var="/path/to/filename.ext" #path is optional
待办事项
var1="${var##*/}
cp "$var" "/path/to/new/directory/${var1%.*}$(date +%s).${var1##*.}"
有关${var%.*}
& ${var##*.}
,请参阅[ shell parameter expansion ]。
日期联机帮助页说:
%s seconds since 1970-01-01 00:00:00 UTC
答案 2 :(得分:0)
file="file_to_copy"
cp $file "/path/to/dest/$file"`stat --printf "%X" $file`
您可以查看stat(man 1 stat
)的手册页,为您的需求选择合适的时间戳(创建,上次访问等)。
在这个例子中,我选择了%X,这意味着time of last access, seconds since Epoch