将新创建的文本文件移动到var创建的目录中

时间:2015-08-04 11:03:55

标签: bash

我每天都会从模板中创建几个文本文档。这个过程我已经成功实现,尽管可能采用Cro-Magnon方式。我希望将这些新创建的文本文件存档在新创建的日期文件夹中。

该脚本成功地从模板创建文件docs,并创建新日期的目录。我真的不想在其他地方创建这些文本文件,然后将它们移动到新创建的目录。而是直接在其中创建它们。我所有的研究都倾向于涉及已经存在的目录,而不是从var。

创建的目录

我在下面只包含了一个文件创建示例。

希望你能提供帮助。 TIA

today=`date '+%y%m%d'`;
today_Folder=~/Desktop/test/"${today}"

if [[ ! -d $today_Folder ]]
 then
   mkdir "${today_Folder} `(date '+%A')`"
fi

cat ~/Desktop/test/template.txt >> ~/Desktop/test/dest.txt

P.S。我试图使关于文本文件的cat命令更清晰 - 它只是创建文件。我不是要创建一个目录树。只需一个新创建的目录,即 test 以及文本文件。

1 个答案:

答案 0 :(得分:0)

您的问题是如何动态创建文件,还创建包含该文件的所有路径?这是不可能以任何直观/可移植的方式,并且通常不是程序总是必须在文件之前创建目录。您可以做的是将-p标记传递给mkdir。在Linux系统上(这也可能不是可移植的),此标志表示“创建此路径所需的所有目录”。零目录没问题,因此您无需检查目录是否已存在。因此,将整个if块更改为:

mkdir -p "${today_Folder} `(date '+%A')`"

此外,它有点像你想要一个字符串(路径)的方式,你正在使用三个操作来创建它。它会更简单吗?当他们增加清晰度时,你需要更多的陈述,但在这种情况下,步骤是如此简单,以至于唯一完成的事情是让你的同事上去阅读你写的不止一次。它可能适合改为:

dir_path=...
mkdir -p "${dir_path}"

要实现此目的,请记住,您可以使用$()添加命令替换,而不是反引号。它有帮助,因为反引号不能嵌套 - 它使行更易读,因为你清楚地看到命令的开始/结束。