2017-11-10 5 views
1

私はこのスクリプトを私の同僚と私の同意なしに使っています。ファイルがLinuxに存在するかどうかを確認する正しい方法

私のスクリプトは、ファイルをパラメータとして取り込み、ファイルを作成します。次に、実際に作成されたかどうかを確認するために、以下を使用します。

ls -p | grep [filename]

私が作成しようとしていますファイルはgrepのリストにある場合次に、私が参照してください。

しかし、彼らは私が

代わり

test -f [filename]

を使用し示唆しています。

ファイルがLinuxに存在するかどうかを確認する適切な方法は何ですか?

+0

ファイルを作成した場合は、そのファイルが作成されています。それが実際に作成されたかどうかをチェックすることはありません。それはそこにあります。 –

+0

より具体的には、「touch FILENAME」でファイルを作成したとします。そのコマンドのリターンコードを確認するだけです –

+2

'ls'を解析しないでください。[here](http://mywiki.wooledge.org/ParsingLs) – oliv

答えて

3

test -f [filename]です。この操作のためにls grepの両方を実行するのは方法の過不足です。

+1

過剰な攻撃だけでなく、ファイル名が誤っている可能性もあります。既存のファイルの(より長い)名前の一部です。 –

+1

ファイル名に改行が含まれている場合は偽陰性です。 –

2

私が知っている2番目の方法は、Linux Foundationの入門コースでアドバイスされています。このメソッドは、その名前が存在するかどうか、およびその名前がファイルかどうかをテストします。 Grepは文字列が見つかったかどうかを単に伝えます。

関連する問題