508 votes

Comment effacer le contenu d'un fichier à partir de la ligne de commande ?

J'ai un fichier journal qui contient un tas d'informations dont je n'ai plus besoin. Je veux en effacer le contenu.

Je sais comment imprimer le contenu à l'écran :

cat file.log

Je sais comment éditer le fichier, ligne par ligne :

nano file.log

Mais je ne veux pas supprimer chaque ligne une par une. Existe-t-il un moyen de le faire en une seule commande sans détruire le fichier pour le faire ?

2voto

kenorb Points 22006

Peu d'alternatives :

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

2voto

DomainsFeatured Points 189

De même, si vous avez plusieurs fichiers, vous pouvez utiliser la méthode suivante :

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

Ceci est utile pour les fichiers journaux dans le même répertoire.

2voto

d491049 Points 11

Si vous avez des espaces dans les noms de fichiers, utilisez :

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

(Je n'ai pas pu l'inclure dans les commentaires de la réponse précédente car je n'ai pas 50 de réputation. Parfois, les limites sont contre-productives).

2voto

sudhams reddy Points 11

Il existe plusieurs façons d'effacer le fichier, comme indiqué ci-dessous :

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

Les exemples ci-dessous sont principalement utilisés dans les scripts Shell.

just# > filename
: > filename

1voto

Pavel Points 151

Avec mes permissions, c'est la seule chose qui a fonctionné :

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X