120 votes

Comment effacer du texte dans un fichier ?

Comment effacer le texte qui existait dans un fichier texte sans l'ouvrir ?

Je veux dire par exemple que j'ai un fichier comme hello.txt avec des données textuelles, et comment puis-je effacer tout le texte de ce fichier ? sans l'ouvrir ?

J'entends par là qu'il ne faut pas utiliser d'éditeur comme nano, Gedit, etc.

5voto

Avinash Raj Points 72686

Si un fichier a été créé avec le nom hello.txt et a été fourni avec quelques textes alors la commande ci-dessous dans le terminal ctrl + alt + t supprimera tout le texte dans le hello.txt fichier,

echo "" > hello.txt

enter image description here

5voto

WinEunuuchs2Unix Points 91128

Ce n'est pas la réponse la plus courte mais...

Cette réponse est basée sur une autre de Super utilisateur . Bien que ce ne soit pas la commande bash la plus courte, truncate est le plus lisible pour les débutants moyens :

$ echo Hello > Hello.txt
$ echo World! >> Hello.txt
$ cat Hello.txt
Hello
World!
$ truncate -s 0 Hello.txt
$ ll Hello.txt
-rw-rw-r-- 1 rick rick 0 Mar 20 17:32 Hello.txt

Paramètres utilisés avec truncate ici :

  • "-s" définit la taille
  • La taille "0" sera nulle

Effacer tout sauf les 10 000 premiers octets

Un avantage de truncate est que vous pouvez spécifier la quantité à conserver, et pas seulement zéro :

$ truncate -s 10000 Hello.txt

... tronquera tout ce qui se trouve après les 10 000 premiers octets. Cela pourrait être utile si un programme devenait fou et déversait plusieurs mégaoctets de données dans un petit fichier journal :

  • Exécuter le truncate commande pour une taille normale raisonnablement plus grande de 10K
  • Ouvrez le fichier avec votre éditeur de texte et appuyez sur End
  • Mettre en évidence et PgUp pour effacer les octets restants qui n'appartiennent pas au fichier (généralement reconnaissables par les caractères ASCII).

1voto

Daniel Points 11
vi filename -c ':1,$d' -c ':wq'

a fonctionné le mieux pour moi en raison de la permission particulière qu'il avait

0voto

precise Points 14840

Je vois donc beaucoup de redirections utilisées pour répondre à cette question ;)

Une approche un peu différente avec le combo : rm & touch

rm hello.txt && touch hello.txt

( Oui... encore une autre tricherie ! )

Donc avec cette combinaison de commandes le fichier hello.txt n'a pas été ouvert et à la fin vous avez toujours le fichier hello.txt à sa place avec le contenu effacé. Comme vous le souhaitiez !

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