当我想像report-05/07/13
使用命令一样触摸文件时touch report-$(date +%D)
,它会给我一个如下错误:
touch: cannot touch
report-07/05/13': 没有这样的文件或目录`
我怎样才能建造一个?
顺便说一下,没有“文件夹”,它只是文件名。
答案1
/ 符号用于路径分隔符。
当你执行该命令时,结果将是
report-07/05/13 但 shell 会这样解释
report-07 - Parent Directory
05 - subdirectory
03 - filename
如果您确实想要目录 report-07/05 那么首先您需要使用以下命令创建它:
mkdir -p report-`date +%m\/%d`
touch report-`date +%D`
如果您想要的只是一个名为 date-MDY 的文件,那么更改分隔符会更容易
touch report-`date +%m.%d.%y`
答案2
touch
只能创建文件,不能创建目录。您必须首先创建目录,例如通过调用mkdir -p $(dirname report-$(date +%D))
.
代表-p
的是家长并在给定路径中创建所有丢失的目录。并将dirname
删除路径的最后一个组成部分,仅将目录传递给mkdir
.
答案3
正斜杠是 Unix 中的路径分隔符,因此不能用作文件名的一部分。如果您的规范实际上是完整路径,您可以这样做:
file=report-$(date +%D)
mkdir -p "${file%/*}"
touch "$file"