web-dev-qa-db-fra.com

Comment effacer du texte dans un fichier?

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

Je veux dire, par exemple, j’ai un fichier hello.txt contenant des données textuelles et comment puis-je effacer le texte total de ce fichier sans l’ouvrir.

66
rɑːdʒɑ

CTRLet tapez commeALTça y est, vos données dans ce fichier seront effacées sans même les ouvrir.T

 > hello.txt

that's it, your data in that file will be cleared with out opening it even .

Example:

enter image description here

130
rɑːdʒɑ

Le moyen le plus simple de tronquer un fichier consiste à rediriger la sortie de la commande Shell no-op (:) vers le fichier à effacer.

: > hello.txt
27
eradman

Je vais aussi utiliser la redirection comme la réponse de Rajagenupula. Mais il y a un peu plus de flexibilité. Ouvrez un terminal et tapez,

cat > hello.txt

Et presse Ctrl+C. Il effacera le fichier précédent. Si vous voulez jusqu'à ce point, c'est bien.

Si vous le souhaitez, vous pouvez faire quelque chose de plus après avoir effacé le fichier. De cette façon, non seulement vous pouvez effacer un fichier sans ouvrir, mais vous pouvez aussi écrire quelques lignes avec un formatage correct dans le fichier. Dites que vous souhaitez écrire "Ubuntu est le meilleur système d'exploitation" après avoir effacé le fichier, il suffit de

cat > hello.txt
Ubuntu is the 
best OS

Puis appuyez Ctrl+C. Maintenant, le fichier précédent est effacé. En même temps, les mots sont en deux lignes comme je les ai mis.

Voir l'exemple:

enter image description here

12
souravc

Je dois le faire tout le temps avec les fichiers journaux. Le moyen le plus simple que j'ai trouvé est d'utiliser la commande suivante:

cat /dev/null > hello.txt

Cela supprime allo du contenu du fichier et vous laisse avec un fichier vide sans avoir à l'ouvrir dans un éditeur, sélectionnez du texte, aucun de ces éléments. Plus précisément, il remplace le contenu du fichier par le contenu de "/ dev/null" ou rien. C'est assez lisse, en fait.

Le seul inconvénient est que l'utilisateur avec lequel vous êtes actuellement connecté doit avoir le droit d'écriture sur ledit fichier.

9
Don Briggs

Si un fichier a été créé avec le nom hello.txt et a été fourni avec quelques textes, la commande ci-dessous dans le terminalctrl+alt+t enlèvera tout le texte du fichier hello.txt ,

echo "" > hello.txt

enter image description here

5
Avinash Raj

Une autre approche - cp le /dev/null au fichier

xieerqi:$ cat testFile.txt                                                                                        
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1      115247656 83100492  26269816  76% /
none                   4        0         4   0% /sys/fs/cgroup
udev             2914492        4   2914488   1% /dev
tmpfs             585216     1152    584064   1% /run
none                5120        0      5120   0% /run/lock
none             2926072    98096   2827976   4% /run/shm
none              102400       76    102324   1% /run/user

xieerqi:$ cp /dev/null testFile.txt                                                                               

xieerqi:$ cat testFile.txt

xieerqi:$ 
3

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 la 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 la commande truncate ici:

  • "-s" définit la taille
  • "0" taille sera zéro

Effacer tout sauf les 10 000 premiers octets

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

$ truncate -s 10000 Hello.txt

... tout tronquer après les 10 000 premiers octets. Cela pourrait être utile si un programme devenait fou et sauvegardait plusieurs mégaoctets de données dans un petit fichier journal:

  • Exécutez la commande truncate pour une taille normale supérieure à 10 Ko.
  • Ouvrez le fichier avec votre éditeur de texte et appuyez sur End
  • Mettre en évidence et PgUp pour supprimer les octets restants qui n'appartiennent pas (généralement reconnaissables par ASCII garbage caractères).
2
WinEunuuchs2Unix
vi filename -c ':1,$d' -c ':wq'

a fonctionné le mieux pour moi à cause de la permission particulière qu’il avait

0
Daniel

Donc, je vois beaucoup de redirections utilisées pour répondre à cette question;)

Une approche légèrement différente avec le combo: rm & touch

rm hello.txt && touch hello.txt

( ouais ... encore un tricheur! )

Donc, avec cette commande combo , le fichier hello.txt n'a pas été ouvert et vous avez toujours le fichier hello.txt à la place, avec le contenu effacé . Juste comme tu voulais!

0
precise