2017-09-05 1 views
3

私はtarコマンドをよく使用しています。しかし、アーカイブファイルの名前を指定するためにdateコマンドを使用してアーカイブを作成しようとしましたが、ファイルを開くことができないというエラーをスローします。 。dateコマンドを使用してアーカイブを作成しようとするとTarコマンドがエラーをスローする

は、ここでディレクトリのコピー、コード、およびエラーです:

@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/ 
[email protected] /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 
[email protected] /media/VideoCam/Test $ 

私はコマンドオプション(zcvf)の順序を切り替え、引用符でとせずに、多くの異なる連結を試みました、私がdateコマンドを省略し、それに名前を付けるならば、例えばarchive.tar.gz、完全に実行されますが、dateコマンドを導入するとエラーが発生します。また、同様の結果を持つ変数としてdateコマンドを設定しようとしました。

+1

フォーマットを修正してください。 – luckytaxi

+0

コード/データの先頭に4つの空白を付けます。 [edit-help](http://stackoverflow.com/editing-help)を見てください。 – Cyrus

+0

'/'はファイル名に使用できません。 – Cyrus

答えて

0

日付はスラッシュを除いてあり、フォルダパスとして扱います。ダッシュを使用します。

0

を使用すると、エラーメッセージを見れば、あなたは

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

を参照してくださいファイルarchive.09/05/17.tar.gzを作成しようとしていることを示しています。ディレクトリ0517.tar.gz、ディレクトリarchive.0917.tar.gzです。

これはあなたが実際に私が疑うれ、望むものであるならば、あなたはサブディレクトリをしたくない場合は

mkdir -p archive.09/05 

ようなものでtar外のディレクトリを作成する必要があり、あなたはで/文字を使用することはできませんファイル名。 dateコマンドの別の形式を試してください。 1つの一般的なオプションは+%Fです。なぜなら、ファイル名が生成されるからです。ファイル名はテキストとしてソートされても正しい順序になります。

+0

うわー、この質問にすばやく答えた皆さん、ありがとう!私はLinuxを長い間使用してきましたが、最も単純なコーディング/スクリプト作成でさえも、私は嫌に思っています。答えはとても分かりやすいようだが、それは完全に私を逃した。また、@Cyrusでは編集ヘルプをチェックします。再度、感謝します! – neolithic

1

dateのマニュアルページを読んで、書式設定のオプションを確認することを強くお勧めします。それは他の人によって示唆されていたよう

問題がdate出力

$ date '+%D' 
09/05/17 

あなたが理由のUnixの典型的な行動の名前にスラッシュでファイルを作成することができないの形式です。代わりに、場合にあなたが%Dと同じ書式を保持することを

$ date '+%m-%d-%Y' 
09-05-2017 

のようなものを試してみてください。

関連する問題