web-dev-qa-db-fra.com

Comment fusionner un fichier d'échange (.swp) avec le fichier d'origine?

J'exécutais un programme de bash avec sa sortie redirigée vers un fichier (test.out). Le processus est mort en raison de certains problèmes (les problèmes ne sont pas importants dans ce contexte) et il me reste maintenant deux fichiers:

  • Le fichier de sortie d'origine test.out qui correspond à 2,1 Go, et
  • Le fichier d'échange généré .test.out.swp qui fait 19 Mo

Existe-t-il un moyen de fusionner ces fichiers, par exemple en ajoutant le fichier d'échange à la fin du fichier d'origine?

Ou est-ce que je me trompe en voulant faire cela? Le fichier d'échange a-t-il un objectif différent de celui utilisé avec output/log?

2
NurShomik

Vim utilise des fichiers .swp comme zones de stockage pour les travaux non terminés, ce qui lui permet d’éditer des fichiers très volumineux même s’ils ne peuvent pas tenir entièrement en mémoire. C’est un héritage de l’époque où l’ordinateur RAM était très petit et où les fichiers volumineux qui n’entraient pas dans la mémoire étaient plus fréquents, mais cela n’a pas changé, et nous permet d’éditer des fichiers de plusieurs gigaoctets sans avoir à manger. tous les processus RAMdisponibles ou de mise à mort. Vim supprime le fichier .swp une fois l’édition terminée ou le quitte si le processus se termine anormalement.

Si vous avez un fichier .swp et un fichier original, vous pouvez récupérer un peu le travail perdu. Ceci est documenté ici:

http://vimdoc.sourceforge.net/htmldoc/recover.html

Pour récupérer un fichier, ouvrez simplement le fichier d'origine. vim remarquera qu’un fichier .swp est déjà associé au fichier et vous avertira et vous demandera ce que vous voulez faire. En supposant que vous ayez les privilèges requis pour écrire dans le fichier, "récupérer" devrait être l'une des options proposées.

Vous pouvez également démarrer une nouvelle instance de vim (sur un document vierge) et utiliser la commande :recover <file> pour indiquer le fichier à récupérer.

Notez que les fichiers .swp sont principalement utilisés en tant que stockage temporaire pour vim, lui permettant d’éditer des fichiers volumineux, PAS de récupération. En tant que tel, vim n'écrit pas de journal dans le fichier et, en cas de coupure de courant lors de l'édition, le fichier .swp peut être corrompu. Heureusement, l'outil de récupération dans vim est assez tolérant pour les fichiers .swp partiellement corrompus et tente toujours de récupérer le plus grand nombre possible de modifications perdues dans le fichier. Recherchez l'existence de trois points d'interrogation: ??? dans le fichier récupéré, car ils seront insérés chaque fois qu'une corruption est trouvée dans le fichier .swp.

Une fois que vous êtes satisfait de la récupération, vous devez supprimer manuellement le fichier .swp pour vous assurer de ne pas recevoir l'avertissement lorsque vous allez éditer le fichier. Veillez à ne pas exécuter le processus de récupération une seconde fois.

3
thomasrutter

Réponse directe

Pour répondre techniquement à votre question:

cat test.out > experiment.out
cat .test.out.swp >> experiment.out

La première redirection de la commande cat _ > crée un nouveau fichier. La deuxième redirection de la commande cat_ >> est ajoutée au fichier existant.

En réalité, experiment.out ne sera probablement pas utilisable car vous ajoutez un Apple à une orange.


Réparation alternative

Vous pouvez google réparer les fichiers: Superuser.com Comment puis-je récupérer le fichier d'origine à partir d'un fichier .swpfile? En bref:

vim -r .swp

Faites d'abord des copies de tous les fichiers!

Si cela ne fonctionne pas, j'utilise gedit sur les deux fichiers dans des onglets séparés, puis dans un troisième onglet, collez le texte copié à partir des deux premiers onglets.

1
WinEunuuchs2Unix