Je veux ouvrir plusieurs fichiers avec vi
ou même less
et supprimer ceux qui ne me dérangent pas sans revenir au shell et passer au suivant.
Je veux ouvrir plusieurs fichiers avec vi
ou même less
et supprimer ceux qui ne me dérangent pas sans revenir au shell et passer au suivant.
Réponses:
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. :ls
montrera une liste des fichiers ouverts. Pour changer, vous pouvez utiliser le nom ou l'index, par exemple b1
pour ouvrir le fichier 1 dans la liste ou b 1.txt
pour basculer explicitement vers le fichier.
:n
et :p
agira comme suivant et précédent respectivement.
:bd
va fermer le fichier.
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 less
processus en appuyant sur Qavant de pouvoir choisir de conserver ou de supprimer le fichier. Vous pouvez utiliser la head -n 10
commande à 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.
echo
travers 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). -i
demande à rm de demander confirmation, ce qui vous donne l'invite oui / non (et, en prime, respecte les paramètres régionaux de l'utilisateur).
!
, et je pense exécuter une commande comme ceci:!rm whateverfile.txt
.