report-05/07/13
コマンドを使用しているかのようにファイルをタッチしようとすると、touch report-$(date +%D)
次のエラーが発生します。
touch: cannot touch
レポート-07/05/13 ':そのファイルまたはディレクトリはありません`
どうやって作れますか?
ところで、「フォルダ」はなく、ファイル名だけがあります。
答え1
/ 記号はパス区切り文字として使用されます。
このコマンドを実行すると、結果は次のようになります。
Report-07/05/13 しかし、シェルはこれを次のように解釈します。
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"