linux – コマンドラインからファイルの内容をクリアするには?

command-line linux

ログファイルの中に不要なものがたくさん入っているのでその内容をクリアしたい

内容を画面に印刷する方法を知っています

cat file.log

ファイルを編集する方法を知っています

nano file.log

でも、一行ずつ削除するのは嫌です。そのためにファイルを破棄せずに、一回のコマンドでできる方法はないでしょうか?

  324  Andrew  2010-01-01


ベストアンサー

バッシュでは

> filename

を実行します。これで空のファイル名が残ることになります

PS: sudoコールが必要な場合は、ここで回答されたとしてtruncateを使用することを検討してください

543  geek  2010-01-01


ユーザーコマンド : truncate を使用することができます

truncate -s 0 test.txt

(サイズを指定するには”-s 0 “を使用)

Empty a file
> file.txt - (Empty a file For when you want to flush all content from a file without removing it (hat-tip to Marc Kilgus).). The best command line collection o...

149  nono  2013-08-20


こんなこともできるんですね

echo -n "" > file.log

>を使って、echo -nからの(ヌル)入力をファイルに書き込む

>>を使うと、ヌル入力をファイルに追加することになります(効果的には何もしませんが、touchをするだけです)

37  Thechickenmoo  2010-01-01


: > file.log

Bash の > filename と同じだが、より多くのシェルで動作する (credit)(出力を持たない) true ビルトインからの出力を filename にリダイレクトする

32  Stuart P. Bentley  2014-07-25


ZSH

>! filename

ZSH は、io リダイレクト演算子 > を使ってファイルを clobber することからユーザを保護します。>! を使うと、既存のファイルを強制的に切り捨てることができます

ファイルクローバーから保護されていない Bash のリダイレクト動作を ZSH に使わせたい場合は、シェルに clobber オプションを設定する必要があります

より多くの情報。http://zsh.sourceforge.net/Doc/Release/Redirection.html

12  Brian Wigginton  2012-12-06


コマンドラインでvimエディタの中からやりたい場合は、次のようにしてみてください

vim file.txt

Press Esc.

:1,$d

Press Enter.

すべての行が削除されていることがわかります

10  soum  2012-09-12


$ rm file.log; touch file.log

or

$ cat > file.log

続いてcontrol-dとなります

or…or…or…

あーあ。こちらはシングルコマンド版

$ dd if=/dev/null of=file.log

5  dmckee — ex-moderator kitten  2010-01-01


以下のコマンドも動作するはずです

cat /dev/null > file.log

5  paarth batra  2016-05-10


ファイルにアクセスするためにスーパーユーザ権限をsudoにする必要がある場合、受け入れられた答えは動作しません。これを使用すると動作します

truncate -s0 file

または明示的にsudoを使用します

sudo truncate -s0 file

詳細はこちら http://www.commandlinefu.com/commands/view/12/empty-a-file

2  timeSmith  2015-01-30


Few alternatives:

ex +%d -scwq file.log
cp /dev/null file.log
vi +%d -escwq file.log
install -m600 /dev/null file.log

1  kenorb  2015-10-25


ファイル名にスペースがある場合は、使用してください

for file in /path/to/file/*; do > "$file"; done

(評価が50もないので前の回答へのコメントには入れられませんでした。制限が逆生産的なこともあります)

1  d491049  2018-03-15


sedを使用してもよい

sed -i d filename

1  apena  2020-05-26


クリアする方法は以下のように複数あります

echo "" > filename
cat /dev/null > filename

以下の例は、主にシェルスクリプトで使用されています

just# > filename
: > filename

1  sudhams reddy  2020-05-26


一度に一行ずつ?

vi(m) を試してみてください。この場合、行に移動し、d キーを押して (削除)、もう一度 d キーを押して (行に) 行に移動します

0  Phoshi  2010-01-01


私の権限では、これだけが機能していました

touch temp.txt
sudo mv temp.txt original-file.txt

0  Morgan  2014-03-04


また、複数のファイルがある場合は

for file in /path/to/file/*; do > $file; done

同じディレクトリにあるログファイルの場合に便利です

0  DomainsFeatured  2016-06-22


windows環境で

type nul >filename

0  Wasif Hasan  2020-09-17


タイトルとURLをコピーしました