Заменить определенную последовательность символов в именах файлов

Таким образом, мой друг сгруппировал тонны файлов в Windows

введите описание здесь

После того, как я заставил его переключиться на Ubuntu, файлы больше не упорядочены по количеству восклицательных знаков перед ними, поэтому я хотел бы знать, как я смогу переключать их, следуя этому правилу:

  • 1 за ! а также !!

  • 0 за !!! а также !!!!

Я думаю, что я должен использовать awk, но я не эксперт, поэтому я здесь..

3 ответа

Решение

Для пакетного переименования файлов и каталогов с помощью GUI вы можете использовать GPRename.

GPRename

Вы можете установить его с помощью:

sudo apt-get install gprename

В скрипте Python:

#!/usr/bin/env python3
import os
import shutil
import sys

dr = sys.argv[1]
replace = ["!", "!!", "!!!", "!!!!"]

for f in os.listdir(dr):
    test = [f.startswith(s) for s in replace]
    if test.count(True) > 2:
        shutil.move(dr+"/"+f, dr+"/"+"0"+f.replace("!", ""))
    elif 0 < test.count(True) < 3:
        shutil.move(dr+"/"+f, dr+"/"+"1"+f.replace("!", ""))

Это заменит ведущий !!!! а также !!! от 0, а также !! а также ! от 1предполагая ! встречается только в начале названия.

Использовать его

  1. вставьте скрипт в пустой файл, сохраните его как rename.py
  2. Запустите его из окна терминала командой:

    python3 /path/to/rename.py '<directory>'
    

    где <directory> каталог, содержащий файлы для переименования.

Вы также можете использовать Perl-based rename команда например

rename -vn -- 's/^!{1,2}(?!!)/0/' *

соответствовать одному или двум ! символы, за которыми не следует ! в начале (^) имени и названия 0; а также

rename -vn -- 's/^!{3,4}(?!!)/1/' *

соответствовать трем или четырем ! символы, за которыми не следует ! в начале (^) имени и названия 1,

Обратите внимание -n Переключатель позволяет вам выполнить "пробный запуск" без фактического изменения имен - сначала проверьте выражения и удалите n если вы хотите продолжить.

Другие вопросы по тегам