2010-01-01 01:50:57 +0000 2010-01-01 01:50:57 +0000
297
297

コマンドラインからファイルの内容をクリアする方法を教えてください

不要になったログファイルがたくさん入っています。内容をクリアしたいのですが、

cat file.log

ファイルを一行ずつ編集する方法は知っていますが、一行ずつ削除したくありません。それを行うためにファイルを破棄することなく、1つのコマンドでそれを行う方法はありますか?

回答 (14)

488
488
488
2010-01-01 10:20:23 +0000

bashでは、

> filename

だけで大丈夫です。

これで空のファイルfilenameが残ります。

133
133
133
2013-08-20 14:21:43 +0000

ユーザコマンド: truncate

truncate -s 0 test.txt

(サイズを指定するには"-s 0 “を使用) http://www.commandlinefu.com/commands/view/12/empty-a-file

35
35
35
2010-01-01 01:55:01 +0000
echo -n "" > file.log

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

>>を使って、ヌル入力をファイルに追加する(効果的には何もしないでtouchするだけ)。

30
30
30
2014-07-25 22:51:07 +0000
: > file.log

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

11
11
11
2012-12-06 20:48:34 +0000

ZSH

>! filename

ZSH は、io リダイレクト演算子 > を使ってファイルのクロバリングからユーザを保護します。

もし ZSH に Bash のリダイレクト動作を使用させたい場合は、シェルに >! オプションを設定する必要があります。 http://zsh.sourceforge.net/Doc/Release/Redirection.html

9
9
9
2012-09-12 18:21:28 +0000

コマンドラインでvimエディタの内部から行う場合は、これを試すことができます:

vim file.txt

Escを押してください。

4
4
4
2016-05-10 12:45:57 +0000

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

cat /dev/null > file.log
4
4
4
2010-01-01 01:59:43 +0000

ここでは単一のコマンドバージョンです:

$ rm file.log; touch file.log
2
2
2
2015-01-30 19:11:35 +0000

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

truncate -s0 file

または明示的にsudoと:

sudo truncate -s0 file

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

1
1
1
2018-03-15 09:36:54 +0000

ファイル名にスペースがある場合は、次のように使用します:

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

(私は50の評判を持っていないので、前の回答へのコメントにそれを含めることができませんでした。時々制限は生産的ではありません)

1
1
1
2015-10-25 22:27:56 +0000

いくつかの選択肢:

ex +%d -scwq file.log
cp /dev/null file.log
vi +%d -escwq file.log
install -m600 /dev/null file.log
``` &001
0
0
0
2016-06-22 16:35:06 +0000

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

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

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

0
0
0
2010-01-01 03:14:40 +0000

一度に一行ずつ?

何でもできる素敵なテキストエディタ vi(m) を試してみてください。この場合、行に移動し、d キーを押して (削除)、もう一度 d キーを押して (行に) 行に移動します。

0
0
0
2014-03-04 00:10:08 +0000

私のパーミッションでは、これが唯一動いたものです:

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

関連する質問

6
10
7
5
6