我每天都会从模板中创建几个文本文档。这个过程我已经成功实现,尽管可能采用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 以及文本文件。
答案 0 :(得分:0)
您的问题是如何动态创建文件,还创建包含该文件的所有路径?这是不可能以任何直观/可移植的方式,并且通常不是程序总是必须在文件之前创建目录。您可以做的是将-p
标记传递给mkdir
。在Linux系统上(这也可能不是可移植的),此标志表示“创建此路径所需的所有目录”。零目录没问题,因此您无需检查目录是否已存在。因此,将整个if
块更改为:
mkdir -p "${today_Folder} `(date '+%A')`"
此外,它有点像你想要一个字符串(路径)的方式,你正在使用三个操作来创建它。它会更简单吗?当他们增加清晰度时,你需要更多的陈述,但在这种情况下,步骤是如此简单,以至于唯一完成的事情是让你的同事上去阅读你写的不止一次。它可能适合改为:
dir_path=...
mkdir -p "${dir_path}"
要实现此目的,请记住,您可以使用$()
添加命令替换,而不是反引号。它有帮助,因为反引号不能嵌套 - 它使行更易读,因为你清楚地看到命令的开始/结束。