Vraag Vervang een specifieke reeks tekens in bestandsnamen


Een vriend van mij groepeerde tonnen bestanden op deze manier op ramen

enter image description here

Nadat ik hem naar Ubuntu had laten overschakelen, zijn de bestanden niet meer geordend op basis van het aantal uitroeptekens aan de voorkant, dus ik zou graag willen weten hoe ik ze zou kunnen omschakelen volgens deze regel:

  • 1 voor ! en !!

  • 0 voor !!! en !!!!

Ik denk dat ik awk moet gebruiken maar ik ben geen expert, daarom ben ik hier ..


1
2018-03-20 10:10


oorsprong


Gewoon nieuwsgierig, maar is het je gelukt? - Jacob Vlijm
@JacobVlijm Hallo, we hebben een snelle shoot met GPRename gegeven, maar het lijkt niet te werken aan html-bestanden, we komen er snel weer op terug - elect


antwoorden:


Voor batch-hernoemen van bestanden en mappen met GUI kunt u gebruiken GPRename.

GPRename

U kunt het installeren met:

sudo apt-get install gprename

2
2018-03-20 10:18



Het ziet er perfect uit, ik zal het proberen - elect


In een python-script:

#!/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("!", ""))

Het zal leiden vervangen !!!! en !!! door 0, en !! en ! door 1, ervan uitgaand ! komt alleen voor aan het begin van de naam.

Om het te gebruiken

  1. plak het script in een leeg bestand, sla het op als rename.py
  2. Voer het uit vanuit een terminalvenster met de opdracht:

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

    waar <directory> is de map met de bestanden die moeten worden hernoemd.


2
2018-03-20 10:41





Je zou ook perl kunnen gebruiken rename bevel b.v.

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

om een ​​of twee te evenaren ! tekens die niet worden gevolgd door een ! aan het begin (^) van de naam, en substitute 0; en

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

om overeen te komen met drie of vier ! tekens die niet worden gevolgd door een ! aan het begin (^) van de naam, en substitute 1.

Merk op -n switch geeft u de mogelijkheid om een ​​'dry run' uit te voeren zonder de namen daadwerkelijk te veranderen - test eerst de expressies en verwijder de n als je verder wilt gaan.


1
2018-03-20 12:27