Substitua a sequência de caracteres específica dentro dos nomes dos arquivos

Substitua a sequência de caracteres específica dentro dos nomes dos arquivos

Um amigo meu agrupou vários arquivos dessa maneira no Windows

insira a descrição da imagem aqui

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

  • 1Para !e!!

  • 0Para !!!e!!!!

Acho que deveria usar o awk, mas não sou um especialista, portanto aqui estou.

Responder1

Para renomear arquivos e diretórios em lote com GUI, você pode usarGPRenome.

GPRenome

Você pode instalá-lo com:

sudo apt-get install gprename

Responder2

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á o início !!!!e !!!por 0e !!e !por 1, assumindo que !ocorre apenas no início do nome.

Para usá-lo

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

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

    onde <directory>está o diretório que contém os arquivos a serem renomeados.

Responder3

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

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

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

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

para corresponder a três ou quatro !caracteres não seguidos por um !no início ( ^) do nome, eésubstituto 1.

NOTA: a -nopção permite que você faça uma 'simulação' sem realmente alterar os nomes - teste as expressões primeiro e remova-as nse quiser continuar.

informação relacionada