ファイルからすべてのエントリを削除する3つの方法を知っています。
彼らは
>ファイル名
タッチファイル名
ファイル名
これら3つのうち、私は> filename
を悪用します 必要なキーストロークの数が最も少ないためです。
ただし、大きなログファイルと小さなファイルに関して、3つのうちどれが最も効率的か(より効率的な方法がある場合)を知りたいです。
また、3つのコードはどのように動作し、内容を削除しますか?
編集 :この回答で説明されているように、これは実際にはそうではありません ファイルをクリアしてください!
承認された回答:
実際、2番目の形式の touch filename
ファイルから何も削除されません。空のファイルが存在しない場合にのみ作成されるか、既存のファイルの最終変更日が更新されます。
そして3番目のfilename
/ dev / null
でファイル名を実行しようとします 入力として。
cp / dev/nullファイル名
動作します。
効率的である場合、最も効率的なのは truncate -s 0 filename
です。 (ここを参照)。
それ以外の場合は、 cp / dev / null filename
または>filename
どちらも大丈夫です。どちらも、truncate-on-open設定を使用して、ファイルを開いてから閉じます。 cp
/ dev / null
も開きます 、そのため、わずかに遅くなります。
一方、 truncate
> filename
よりも遅くなる可能性があります truncateコマンドを実行するためにスクリプトから実行する場合、システムは実行可能ファイルを開き、ロードしてから実行する必要があります。