Ein Freund von mir hat auf diese Weise unzählige Dateien unter Windows gruppiert
Nachdem ich ihn dazu gebracht habe, auf Ubuntu umzusteigen, werden die Dateien nicht mehr nach der Anzahl der Ausrufezeichen am Anfang sortiert. Daher wüsste ich gerne, wie ich sie nach dieser Regel umstellen kann:
1
für!
und!!
0
für!!!
und!!!!
Ich schätze, ich sollte awk verwenden, aber ich bin kein Experte, deshalb bin ich hier …
Antwort1
Für die Batch-Umbenennung von Dateien und Verzeichnissen mit GUI können Sie verwendenGPRename.
Sie können es installieren mit:
sudo apt-get install gprename
Antwort2
In einem Python-Skript:
#!/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("!", ""))
Es ersetzt führende !!!!
„und“ !!!
durch 0
, und !!
„und“ !
durch 1
, vorausgesetzt, !
es steht nur am Anfang des Namens.
Um es zu benutzen
- Fügen Sie das Skript in eine leere Datei ein und speichern Sie es unter
rename.py
Führen Sie es aus einem Terminalfenster mit dem folgenden Befehl aus:
python3 /path/to/rename.py '<directory>'
wobei
<directory>
sich das Verzeichnis mit den umzubenennenden Dateien befindet.
Antwort3
Sie können auch den perl-basierten rename
Befehl verwenden, zB
rename -vn -- 's/^!{1,2}(?!!)/0/' *
um ein oder zwei Zeichen abzugleichen, denen am Anfang ( ) des Namens !
kein a folgt , und!
^
SErsatz 0
; und
rename -vn -- 's/^!{3,4}(?!!)/1/' *
für drei oder vier Zeichen, denen am Anfang ( ) des Namens !
kein a folgt , und!
^
SErsatz 1
.
HINWEIS: Mit dem -n
Schalter können Sie einen „Trockenlauf“ durchführen, ohne die Namen tatsächlich zu ändern. Testen Sie zuerst die Ausdrücke und entfernen Sie sie, n
wenn Sie fortfahren möchten.