Sustituya una secuencia de caracteres específica dentro de los nombres de archivos

Sustituya una secuencia de caracteres específica dentro de los nombres de archivos

Un amigo mío agrupó toneladas de archivos de esta manera en Windows.

ingrese la descripción de la imagen aquí

Después de que lo hice cambiar a Ubuntu, los archivos ya no están ordenados según la cantidad de signos de exclamación al frente, así que me gustaría saber cómo podría cambiarlos siguiendo esta regla:

  • 1Para !y!!

  • 0Para !!!y!!!!

Supongo que debería usar awk pero no soy un experto, así que aquí estoy.

Respuesta1

Para cambiar el nombre por lotes de archivos y directorios con GUI, puede utilizarGPRenombrar.

GPRenombrar

Puedes instalarlo con:

sudo apt-get install gprename

Respuesta2

En un script de 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("!", ""))

Reemplazará el inicio !!!!y !!!por 0, y !!y !por 1, asumiendo que !aparece solo al principio del nombre.

para usarlo

  1. pegue el script en un archivo vacío, guárdelo comorename.py
  2. Ejecútelo desde una ventana de terminal con el comando:

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

    ¿Dónde <directory>está el directorio que contiene los archivos a cambiar de nombre?

Respuesta3

También puede utilizar el renamecomando basado en Perl, por ejemplo

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

para hacer coincidir uno o dos !caracteres no seguidos por un !al principio ( ^) del nombre, yssustituto 0; y

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

para hacer coincidir tres o cuatro !caracteres no seguidos de un !al principio ( ^) del nombre, yssustituto 1.

NOTA: el -nmodificador le permite realizar un 'ejecución en seco' sin cambiar realmente los nombres; primero pruebe las expresiones y elimínelas nsi desea continuar.

información relacionada