Puis-je supprimer un fichier de `inside` vi`?


-1

Je veux ouvrir plusieurs fichiers avec viou même lesset supprimer ceux qui ne me dérangent pas sans revenir au shell et passer au suivant.


2
Je peux me tromper, mais vous pouvez échapper à une coquille avec !, et je pense exécuter une commande comme ceci: !rm whateverfile.txt.
— LawrenceC

@ultrasawblade Cela semble plausible.
— un CVn

Que voulez-vous dire "supprimer" (fermez-le, supprimez-le, autre chose), et que voulez-vous dire quand vous dites "sans revenir en arrière et passer au suivant"? Revenir à quoi?
— ernie

Réponses:


0

Avec vi, vous pouvez ouvrir plusieurs fichiers, de manière explicite ou par un caractère générique, par exemple:

vi 1.txt 2.txt
vi *.txt

Une fois ouverts, vous pouvez naviguer entre eux de différentes manières. :lsmontrera une liste des fichiers ouverts. Pour changer, vous pouvez utiliser le nom ou l'index, par exemple b1pour ouvrir le fichier 1 dans la liste ou b 1.txtpour basculer explicitement vers le fichier.

:net :pagira comme suivant et précédent respectivement.

:bd va fermer le fichier.


0

La question a de nombreuses interprétations, mais je suppose que vous voulez une sorte de visualiseur automatique qui vous demande si vous souhaitez conserver / supprimer un fichier. Une méthode pourrait être la suivante:

Étant donné une liste de fichiers:

#!/bin/bash

for f in "$@"; do
    less "$f"
    # head -n 10
    rm -i "$f"
done

Étant donné un répertoire qui contient les fichiers:

#!/bin/bash
dir="$1"

for f in "$dir/*"; do
    less "$f"
    # head -n 10
    rm -i "$f"
done

Dans les deux scripts, vous devrez quitter le lessprocessus en appuyant sur Qavant de pouvoir choisir de conserver ou de supprimer le fichier. Vous pouvez utiliser la head -n 10commande à la place pour éviter cela et n'afficher que les 10 premières lignes.

Exécutez-les à partir d'une ligne de commande et donnez-leur les paramètres corrects. Bonne chance.


Vous pouvez remplacer l'intégralité de ces scripts de echotravers esac(inclus) avec simplement rm -i "$f"(je suggère également échapper au nom de fichier dans l'invocation, pour se prémunir contre des caractères spéciaux). -idemande à rm de demander confirmation, ce qui vous donne l'invite oui / non (et, en prime, respecte les paramètres régionaux de l'utilisateur).
— un CVn

Merci pour la suggestion, j'ai corrigé le script pour utiliser votre méthode. Je vous remercie.
— arielnmz

Cela fonctionne très bien, merci arielnmz et Michael.
— user3634569
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.