shell脚本将2个文件从一个目录移动到另一个目录并重命名

时间:2017-12-12 16:01:30

标签: bash shell

我想将2个文件从当前目录移动到存档目录,并在执行此操作时重命名文件,并为日期添加前缀并更改文件扩展名。如果我删除它的移动目录部分,它下面的脚本确实有效。请参阅脚本和错误消息。存档目录的权限是777,文件也是如此。

#!/bin/bash
  cdate=$(date +%Y-%m-%d)
  destdir=${/home/dcaceres/load/archive}
   for file in allcustomer.csv loadcustomer.csv; do
    mv "$file" "$destdir/$cdate"_"$file"".ARCHIVE"
  done 

    the error.
    ./archive_customer_load.sh: line 3: /home/dcaceres/load/archive: Is a directory

mv: cannot move 'allcustomer.csv' to '/2017-12-12_allcustomer.csv.ARCHIVE': Permission denied

mv: cannot move 'loadcustomer.csv' to '/2017-12-12_loadcustomer.csv.ARCHIVE': Permission denied

1 个答案:

答案 0 :(得分:0)

更改以下行将完成工作:

destdir=${/home/dcaceres/load/archive}

为:

destdir="/home/dcaceres/load/archive"

<强>解释

使用变量时需要使用大括号,这并不总是必要的。在许多情况下,它很有用,例如,在使用数组或使用参数扩展时,将字符串连接到变量的值。

在您的情况下,我们只需要为变量destdir分配string,因此我们可以直接使用引号进行操作。

有关详细信息:When do we need curly braces around shell variables?