レポート-07/05/13のようなファイルに触れる方法

レポート-07/05/13のようなファイルに触れる方法

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"

関連情報