web-dev-qa-db-ja.com

touch:ファイルをタッチできません:そのようなファイルまたはディレクトリはありません

エラーが発生します:

touch: cannot touch `/opt/tsrm/compliance/cme/log/20121207.log`: No such file or directory

タッチコマンド:touch $LOGFILE

私もリンクをチェックしました: touch:cannot touch `foo ':No such file or directory 、しかし、私は答えを理解していませんでした。

注:mkdir: cannot create directoryも取得していました。 -pオプションを追加してこれを修正しました。

これは、私が作業しているLinuxのバージョンで何かあるのでしょうか?

23
Swagatika

ファイルを保持するパスがありません:

/opt/tsrm/compliance/cme/log/

それがエラーの原因です。

22
daisy

パスのスペルを間違えたようです。たとえば、このフォルダー/stuff/more_stuff 存在しません。これは私に結果を与えます:

user@linux:~ $ touch /stuff/more_stuff/stuff.file
touch: cannot touch `/stuff/more_stuff/stuff.file': No such file or directory

両方とも /stuffおよび/stuff/more_stufftouchが機能するためには、存在する必要があります。

7
Kotte

はい、タイプミスやディレクトリが存在しない可能性があります。

LOGFILE="/opt/tsrm/compliance/cme/log/20121207.log"
LOG_DIR=`dirname $LOGFILE`
[ ! -d $LOG_DIR ] && mkdir -p $LOG_DIR
touch $LOGFILE
3
Rahul Patil

この応答のように愚かな、ディレクトリが欠落している以外に、$LOGFILEの値を囲む文字列区切り文字が存在する可能性があります

ワーキング:

LOGFILE=/stuff/more_stuff/stuff.file
touch $LOGFILE

機能していない:

LOGFILE="/stuff/more_stuff/stuff.file"
touch $LOGFILE

一部のLinuxディストリビューションには上記の癖があるため、注意してください;)

1
Dwi C Taniel