Wie kann ich Dateien, die eine bestimmtes Wort beinhalten umbenennen?

3 Antworten

import glob
import os

files = glob.glob("*.txt")
temp = []
for i in range(len(files)):
  if "Hause" in files[i]:
    temp.append(files[i])

files = temp[:]

for i in range(len(files)):
  temp[i] = temp[i].replace("Hause","")
  os.rename(files[i],temp[i])

Datentyp anpassen. Also die daten die du umbennen musst sind ja ".pdf",".img" oder was weiß ich. Also hier das files = glob.glob("*.txt") durch "*.pdf" oder so ersetzen.

Den Quellcode einmal abspeichern als "rename.py"

Python installieren.

Dann einfach in der cmd konsole starten durch:

python rename.py

ENJOY


Frager756463 
Beitragsersteller
 24.10.2021, 20:06

Danke. Muss ich den Pfad in dem die Datei liegt nicht irgendwo angeben?
Bei mir hat er leider gar nichts verändert.

0
HaveFaith  24.10.2021, 20:07
@Frager756463

Die .py datei muss im Pfad drin sein wo die dateien sind. Und mir ist gerade ein tippfehler aufgefallen. Letzte Zeile.. hab ich korrigiert.

0
Frager756463 
Beitragsersteller
 24.10.2021, 20:09
@HaveFaith

Ah, okay, jetzt bekomme ich folgende Meldung:

Traceback (most recent call last):

 File "rename.py", line 14, in <module>

  os.rename(files[i],temp)

TypeError: rename: dst should be string, bytes or os.PathLike, not list

Python ist aber installiert

0
Frager756463 
Beitragsersteller
 24.10.2021, 20:13
@HaveFaith

Ich habe jetzt folgendes Script ausgeführt

import glob

import os

files = glob.glob("*.mp4")

temp = []

for i in range(len(files)):

 if "Haus" in files[i]:

  temp.append(files[i])

files = temp[:]

for i in range(len(files)):

 temp[i].replace("Haus","")

 os.rename(files[i],temp[i])

Es gibt zwar keine Fehlermeldung, es passiert aber auch sonst nichts

0
HaveFaith  24.10.2021, 20:14
@Frager756463

Ah okay ersetze mal:

temp[i].replace("Hause","")

durch:

temp[i] = temp[i].replace("Hause","")

0

Ich würde mal https://www.bulkrenameutility.co.uk/ in Kombination mit Regex empfehlen.

Regex:

/.*Haus.*/g
Woher ich das weiß:Studium / Ausbildung – Informatikstudent

PowerShell:

dir <Pfad> | ForEach-Object {Rename-Item $_ -NewName ($_.Name -replace 'Haus', '')}

Statt <Pfad> muss halt der Pfad drin stehen, in dem die Dateien sind. Der Teil hinter -replace benutzt regular expressions. Du kannst also ziemlich wilde Ersetzungen vornehmen. Musst aber aufpassen, dass manche Zeichen (bei Dateinamen z.B. insbesondere der Punkt) Sonderzeichen für Regex sind.