最近触れたこのページファイルを空にする方法を示します。特定のサブフォルダ内のすべてのファイルに対してこれを行うにはどうすればよいですか?
たとえば、> file.log
次のようにファイルを消去するには?
デフォルトでは、仮想マシンインスタンスイメージを作成し、テンプレートを使用するときに残りのデータなしで再起動するように既存のログファイルを消去したいと思います。
答え1
そして
for i in /var/log/*; do
> "$i"
done
ディレクトリに関するエラーメッセージを防ぐには、テストを含めてください。
for i in /var/log/*; do
test -f "$i" && > "$i"
done
答え2
単一コマンドの別のオプションは次のとおりです。truncate
:
truncate -s /var/log/*
ただし、上記のコードは/var/logのすべてのサブディレクトリに対してエラーを発生させます。
切り捨て:書き込み用に '/var/log/subdir'を開くことができません。ディレクトリです。
...stderrを削除して無音に設定できます。
truncate -s /var/log/* 2>/dev/null
ファイルやディレクトリがない場合は、現在のnullglob
シェルオプションに注意する必要があります。デフォルトではオフです。
$ shopt nullglob
nullglob off
...これにより、*
コンテンツは拡張されていないままになるため、truncate
というファイルが生成されます*
。次の 2 つの方法でこれを回避できます。
shopt -s nullglob
nullglob設定:実行する前にtruncate
。その後、(stderrを削除しないと)エラーが表示されます。切り捨て:ファイルオペランドがありません
truncate
欠落しているファイルを生成しないように指示します。truncate --no-create -s 0 /var/log/*