For循环删除文件而不是重命名

时间:2017-10-17 15:15:20

标签: bash shell scripting

我有一个文件目录,我需要将其重命名为带有时间戳的给定字符串。

我使用以下代码:

for file in itvl_*
do
  mv "$file" "Interval_$(stat -c %Y "$file" | date +%Y%m%d%H%M%S).Interval_001"
done

当我在符合给定掩码itvl_ *的文件目录中运行脚本时,它会删除除一个或两个文件之外的所有文件,然后成功重命名该组中的最后一个文件。

这里可能会发生什么?

1 个答案:

答案 0 :(得分:1)

它不会删除所有文件,只需将所有文件重命名为相同的目标名称。

你可以通过运行来看到它:

for file in itvl_*
do
    echo "Interval_$(stat -c %Y "$file" | date +%Y%m%d%H%M%S).Interval_001"
done

结果是他们互相覆盖,只有最后一个幸存下来。