尝试使用date命令创建存档时,Tar命令抛出错误

时间:2017-09-05 17:40:16

标签: date command-line archive tar

我经常使用tar命令,非常熟悉它。但是,我尝试使用date命令创建存档来命名存档文件,并且它会引发错误,导致它无法打开文件,这很奇怪,因为我没有尝试打开文件,但创建它。

这是目录,代码和错误的副本:

@MDG /media/VideoCam/Test $ ll
total 468
drwxr-xr-x 3 neo neo   4096 Sep  5 09:55 ./
drwxr-xr-x 4 neo neo 466944 Sep  4 21:54 ../
-rw-r--r-- 1 neo neo     45 Sep  5 08:52 1.jpg
-rw-rw-r-- 1 neo neo      0 Sep  5 08:41 1.mp4
-rw-r--r-- 1 neo neo      0 Sep  4 19:32 2.jpg
-rw-rw-r-- 1 neo neo      0 Sep  5 08:41 2.mp4
-rw-r--r-- 1 neo neo      0 Sep  4 19:32 3.jpg
-rw-r--r-- 1 neo neo      0 Sep  4 19:32 4.jpg
-rw-rw-r-- 1 neo neo      0 Sep  5 08:41 4.mp4
-rw-r--r-- 1 neo neo      0 Sep  4 19:32 5.jpg
-rw-rw-r-- 1 neo neo      0 Sep  5 08:41 5.mp4
-rw-r--r-- 1 neo neo      0 Sep  4 19:32 6.jpg
-rw-rw-r-- 1 neo neo      0 Sep  5 08:41 6.mp4
-rw-r--r-- 1 neo neo      0 Sep  4 19:32 7.jpg
-rw-rw-r-- 1 neo neo      0 Sep  5 08:41 7.mp4
-rw-r--r-- 1 neo neo      0 Sep  4 19:32 8.jpg
-rw-rw-r-- 1 neo neo      0 Sep  5 08:41 8.mp4
drwxr-xr-x 2 neo neo   4096 Sep  4 19:30 Archive/
neo@MDG /media/VideoCam/Test $ sudo tar -zcvf "archive.$(date '+%D').tar.gz" *.jpg
tar (child): archive.09/05/17.tar.gz: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg
7.jpg
8.jpg
neo@MDG /media/VideoCam/Test $

我尝试了许多不同的连接,有和没有引号,切换命令选项(zcvf)等的顺序。如果我省略了date命令并给它一个名字,例如archive.tar.gz,它执行得很完美,但引入date命令会导致错误。我还尝试将date命令设置为具有类似结果的变量。

3 个答案:

答案 0 :(得分:1)

如果您查看错误消息,则会看到

tar (child): archive.09/05/17.tar.gz: Cannot open: No such file or directory

这表示它正在尝试创建文件archive.09/05/17.tar.gz。也就是说,目录17.tar.gz05目录中的archive.09

如果这是您真正想要的,我怀疑,您需要在tar之外创建类似

的目录
mkdir -p archive.09/05

如果您不想使用子目录,则不能在文件名中使用/字符。为date命令尝试不同的格式;一个常见选项是+%F,因为它生成的文件名如果按文本排序,仍然会以正确的顺序排列。

答案 1 :(得分:1)

我强烈建议您阅读date手册页并检查格式选项。

正如其他人所建议的那样,问题在于date输出

的格式
$ date '+%D'
09/05/17

由于Unix的典型行为,您无法在名称中创建带斜杠的文件。你应该尝试像

这样的东西
$ date '+%m-%d-%Y'
09-05-2017

如果您想保留与%D相同的格式。

答案 2 :(得分:0)

日期是斜杠,它将其视为文件夹路径。使用破折号。