如何触摸像report-07/05/13这样的文件

如何触摸像report-07/05/13这样的文件

当我想像report-05/07/13使用命令一样触摸文件时touch report-$(date +%D) ,它会给我一个如下错误:

touch: cannot touchreport-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"

相关内容