Хотите переименовать изображения оптом в Linux

У меня была такая же проблема на xubuntu 14.04 (64) и xmodmap (с точно такими же ключами) и я нашел решение, используя xkb вместо xmodmap: Remapping Keys in Ubuntu (using xkb)

Решение xkb требует только изменить ключевые коды в

/usr/share/X11/symbols/pc

и очистить кэш xkb на

rm -rf /var/lib/xkb/*

После этого у меня не было никаких задержек. Возможно, это работает и в Linux Mint.

0
30.12.2018, 13:02
2 ответа

Это можно сделать с помощью Python следующим образом:

#!/usr/bin/python

import glob
import re
import os
from collections import Counter

origNames = glob.glob('*jpg')

finalNames = []
for i in origNames:
    for old, new in [(r'\d+x\d+', ''), (r'\d', ''),(r'^\W+', ''),(r'-*\.-*', '.'), (r'\.jpg$', '')]:
        i = re.sub(old, new, i)
    finalNames.append(i)

counts = Counter(finalNames)
for s,num in counts.items():
    if num > 1:
        for suffix in range(1, num + 1):
            finalNames[finalNames.index(s)] = s + str(suffix)

print(origNames, finalNames)

for i,j in zip(origNames, finalNames):
    os.rename(i,j+".jpg")
0
28.01.2020, 04:06

В Bash решение может выглядеть так:

#!/bin/bash

shopt -s extglob

for fn_old in *.jpg; do

  i=0
  fn_new=${fn_old##+([-0-9])}                       # strip leading number sequence in basename 
  fn_new=${fn_new/%[-0-9]*([-0-9x]).jpg/.jpg}       # strip trailing number sequence in basename

  while [[ -e $fn_new ]]; do                        # see if proposed name already exists
    i=$((i+1))                                      # doublure counter
    fn_new=${fn_new/%*([-0-9]).jpg/-$i.jpg}         # try new filename with updated number
  done

  echo "$fn_old" -- "$fn_new"
  mv   "$fn_old" "$fn_new"

done

Будьте осторожны с командой mv. Вы можете закомментировать его (или заменить его наcp)при первом запуске, просто чтобы увидеть, соответствует ли схема переименования тому, что вы хотите/ожидаете.

Объяснение шаблонов оболочки и манипуляций со строками см. в :Сопоставление шаблонов Bash и Обработка строк Bash .

0
28.01.2020, 04:06

Теги

Похожие вопросы