-1
votes

Comment ajouter une constante au numéro inclus dans les noms de fichiers dans Python ou Bash Script?

Dis que j'ai les fichiers suivants:

file1900.txt File1901.txt File1902.txt ... File1998.txt File1998.txt File1999.txt File0.txt File1.txt File2.txt File3.txt ... File19.txt fichier20.txt < / p>

Maintenant, je veux ajouter une constante 2000 à tous les fichiers où les numéros inclus dans le nom de fichier sont inférieurs à 1900 . Vous trouverez ci-dessous comment je souhaite renommer ces fichiers:

file1900.txt File1901.txt File1902.txt ... File1998.txt File1998.txt File2000.txt File2001.txt File2002.txt File2003.txt ... File2019.txt < / p>

Y a-t-il un bon script Python pour cela? Le script Linux Bash va aussi bien s'il est plus facile.


2 commentaires

Quel est le problème, exactement? Avez-vous essayé quelque chose, effectué des recherches? Overflow de pile n'est pas un service de rédaction de code gratuit. Voir: Tour , Comment demander < / a>, centre d'aide , meta.stactverflow.com/questions/261592/... .


Une approche à Bash serait de boucler sur les chiffres de 0 à 1899, et si un fichier existe qui est nommé "fichier" + numéro + ".txt" , puis renommez-le sur " Fichier "+ (numéro + 2000) +" .txt ".


3 Réponses :


1
votes

Ce script python suivant utilise une expression régulière pour correspondre au modèle général que vous avez fourni, avec le numéro dans un groupe correspondant.

Si le numéro est inférieur à 1900, il ajoute A 2000 à celui-ci puis appelle OS.Rename code> Pour renommer le fichier. P>

import re
import os

expression = re.compile(r'file(\d+)\.txt')

for item in os.scandir():
    if item.is_file():
        match = expression.match(item.name)
        if match:
            num = int(match.group(1))
            if num < 1900:
                num += 2000
                new_name = f"file{num}.txt"
                os.rename(item.name, new_name)


0 commentaires

1
votes

Vous pouvez le faire de cette façon dans Bash. XXX


0 commentaires

0
votes

Si votre exigence vient de travailler avec des "années" dans les noms de fichiers, il peut être logique d'ajouter 2000 seulement à un numéro inférieur à 1000.

Dans ce cas, vous pouvez simplement utiliser le linux renommer Commande avec Perl Regex: xxx

fichier? .txt fichier ??. fichier txt ???. txt appliquer renommé uniquement sur fichiers fichier0.txt , ... file10.txt, ... file999.txt

(\ d {1,3}) (\. TXT) - attrape tout un / deux / trois Numéros de chiffres avant ".txt"

($ 1 + 2000). $ 2 - remplace les numéros trouvés ($ 1) par "Numéro + 2000" et rejoute le CATCHE ". txt "(2 $)


0 commentaires