Как добавить константу к числу, включенному в имена файлов в скрипте python или bash? - PullRequest
0 голосов
/ 10 марта 2020

Скажем, у меня есть следующие файлы:

file1900.txt file1901.txt file1902.txt ... file1998.txt file1999.txt file0.txt file1.txt file2.txt file3.txt ... file19.txt file20.txt

Теперь я хочу добавить константу 2000 для всех файлов, где числа, включенные в имя файла, меньше 1900. Ниже описано, как я хочу переименовать эти файлы:

file1900.txt file1901.txt file1902.txt ... file1998.txt file1999.txt file2000.txt file2001.txt file2002.txt file2003.txt ... file2019.txt file2020.txt

Есть ли хороший сценарий python для этого? Linux bash Сценарий тоже подойдет, если будет проще.

Ответы [ 2 ]

1 голос
/ 10 марта 2020

Вы можете сделать это следующим образом: bash.


FILES="file*.txt"
# loop through files in current dir
for file in $FILES                     
do
    #extract file number
    num=`echo $file | tr -dc '0-9'`    
    if [ "$num" -lt "$min_num" ]; then 
        # increment file number if it is less than 1900
        num_new=`expr $num + 2000`     
        # replace number with new one
        file_new=`echo $file | sed -e "s/$num/$num_new/g"`
        # rename file
        mv $file $file_new             
    fi

done```

1 голос
/ 10 марта 2020

Этот следующий скрипт Python использует регулярное выражение для соответствия предоставленному вами шаблону с номером в соответствующей группе.

Если число меньше 1900, оно добавляет к нему 2000 и затем вызывает os.rename, чтобы переименовать файл.

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...