【问题标题】:Create directory based on date/time and copy files to it?根据日期/时间创建目录并将文件复制到其中?
【发布时间】:2017-12-16 05:11:39
【问题描述】:

我正在尝试创建一个脚本,该脚本将根据当前时间和日期创建一个文件夹。然后我需要脚本将文件从源文件夹复制到新创建的文件夹。然后我需要它将文件夹从第二个源文件夹复制到原始源文件夹,覆盖其中的所有内容。

以下是我尝试过的方法,但它以一种史诗般的方式失败了。

#!/bin/bash

d="/home/$(date +%d-%m-%y")"
mkdir "$d"
cp /home/test "$d"
cp /home/test2 /home/test

我知道我不必定义变量,因为复制之间的时间应该是几秒钟而不是一天,但我想确保老实说,我有兴趣学习使用变量在脚本中。

【问题讨论】:

  • 请看:shellcheck.net
  • 您说您需要“从源文件夹复制文件”,但cp /home/test somewhere 仅在/home/test文件 时才有效.你可以cp /home/test/* /some/dir/cp -r /home/test /some/dir/
  • "... 它以一种史诗般的方式失败了。" - 问题陈述不是很有帮助。请详细说明它是如何失败的。

标签: linux bash scripting debian


【解决方案1】:

这里的双引号太多了:

d="/home/$(date +%d-%m-%y")"

其实这里根本不需要引用,这样写:

d=/home/$(date +%d-%m-%y)

在脚本的其余部分,如果要复制目录,则需要使用cp -r 而不是简单的cp

最后,注意当你在dir2已经存在的时候做cp -r dir1 dir2,那么dir1会被复制到dir2里面,而不是覆盖它的内容。也就是说,它将创建dir2/dir1。如果dir1不包含隐藏文件,那么可以这样写覆盖dir2的内容:

cp -r dir1/* dir2/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    • 2015-07-29
    相关资源
    最近更新 更多