Substitui a sequência de caractere específica dentro dos nomes de arquivos

1

Um amigo meu agrupou toneladas de arquivos dessa maneira no Windows

Depois que o fiz mudar para o Ubuntu, os arquivos não são mais ordenados com base no número de pontos de exclamação à frente, então gostaria de saber como eu poderia trocá-los seguindo esta regra:

  • 1 para ! e !!

  • 0 para !!! e !!!!

Eu acho que devo usar o awk, mas não sou um especialista, portanto aqui estou ...

    
por elect 20.03.2015 / 11:10

3 respostas

2

Para a renomeação em lote de arquivos e diretórios com GUI, você pode usar o GPRename .

Você pode instalá-lo com:

sudo apt-get install gprename
    
por madneon 20.03.2015 / 11:18
2

Em um script 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("!", ""))

Ele substituirá os principais !!!! e !!! por 0 e !! e ! por 1 , supondo que ! ocorra apenas no início do nome.

Para usá-lo

  1. cole o script em um arquivo vazio, salve-o como rename.py
  2. Execute-o a partir de uma janela de terminal pelo comando:

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

    onde <directory> é o diretório que contém os arquivos para renomear.

por Jacob Vlijm 20.03.2015 / 11:41
1

Você também pode usar o comando rename baseado em perl, por exemplo,

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

para corresponder a um ou dois% caracteres ! não seguidos por ! no início ( ^ ) do nome e s ubstitute 0 ; e

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

para combinar três ou quatro ! caracteres não seguidos por ! no início ( ^ ) do nome e s ubstitute 1 .

OBSERVAÇÃO: a opção -n permite que você execute um 'dry run' sem realmente alterar os nomes - teste as expressões primeiro e remova o n se você quiser prosseguir.

    
por steeldriver 20.03.2015 / 13:27