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

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

enter image description here

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

  • 1 для ! и !!

  • 0 для !!! и !!!!

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

1
задан 20 March 2015 в 13:43

3 ответа

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

GPRename

можно установить его с:

sudo apt-get install gprename
2
ответ дан 20 March 2015 в 13:43

Вы могли также использовать находящееся в perl rename команда, например,

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

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

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

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

ПРИМЕЧАНИЕ: эти -n переключатель позволяет Вам делать, 'пробный прогон', на самом деле не меняя имена - тестирует выражения сначала и удаляет n, если Вы хотите продолжить двигаться.

1
ответ дан 20 March 2015 в 13:43

В сценарии 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> каталог, содержащий файлы для переименования.

2
ответ дан 20 March 2015 в 13:43

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

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