1 votes

Sauvegarde d'un répertoire de programmation

J'ai un répertoire contenant de nombreux programmes C compilés que j'aimerais sauvegarder. Pour l'instant, ils sont nommés program.out mais je voudrais changer cela en program .

Serait-il encore possible de les exclure ? Par ailleurs, quelle sorte d'expression rationnelle pourrais-je utiliser pour les renommer rapidement ?

1voto

Je ne suis pas très clair sur votre première question. Si vous voulez renommer program.out a program alors il suffit de courir :

mv program{.out,}

Pour la deuxième question, en supposant que je veuille obtenir une liste de fichiers en /etc avec un suffixe :

#!/bin/bash
ls /etc > /tmp/etcfiles
while read line
do
   if [[ $line =~ \..+ ]]; then
      echo $line
   fi
done < /tmp/etcfiles

Vous pouvez ajuster les éléments ci-dessus selon vos besoins.

  • \. correspond à un point littéral.
  • . correspond à tout caractère suivant le point.
  • + dit qu'au moins un caractère doit suivre le point initial. Cela correspondra donc à test.c mais pas test. Si vous voulez faire correspondre test. également, puis modifiez le + à un * .

0voto

Bakuriu Points 592

Si vous utilisez bash comme Shell, c'est une tâche simple pour un pipeline Shell.

ls | grep '\.out$' | while read file; do echo mv "$file" "${file%.*}"; done

ls produit une liste de fichiers dans le répertoire.

grep '\.out$' extrait les noms de fichiers qui se terminent par .out et rejette le reste.

while read file lit les noms de fichiers un par un.

echo mv "$file" "${file%.*}" affiche mais n'exécute pas une commande mv qui renommerait chaque fichier en une version sans son extension. Le site ${file%.*} business est la syntaxe bash pour supprimer l'extension d'un fichier. Lorsque vous êtes convaincu que le pipeline ferait ce que vous voulez s'il était exécuté pour de vrai, supprimez l'extension echo et le laisser fonctionner pour de bon.

ls | grep '\.out$' | while read file; do mv "$file" "${file%.*}"; done

0voto

3h4x Points 216

Pour sauvegarder votre code, utilisez git ou un autre logiciel de contrôle de version. Sur Internet, vous avez beaucoup de choix, pour n'en citer que quelques-uns : github, bitbucket.

Dans git vous avez un fichier .gitignore si vous y ajoutez *.out alors il ne sera pas transféré dans le dépôt.

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