suche aehnlich krename blos fürs terminal
suche aehnlich krename blos fürs terminal
hallo,
ich suche ein tool zum abschneiden von dateinamen in einem verzeichnis.
es sind ca. 20 dateien in dem verzeichnis.
vorne sollen 5 zeichen weggeschnitten werden und hinten 7 zeichen.
die endung soll dabei erhalten bleiben.
krename macht dies ganz gut blos das kann ich nicht auf mein server nutzen da ich dort keine grafische benutzeroberfläche habe.
z.b.
renamebin verzeichnis/ -b5 -a7 -e
bevor halt 5 zeichen abschneiden after gleich 7 und das -e soll dabei den erweiterungs typ erhalten.
so einfach sollte es jedenfalls sein alles andere ist nichts für mich.
danke.
ich suche ein tool zum abschneiden von dateinamen in einem verzeichnis.
es sind ca. 20 dateien in dem verzeichnis.
vorne sollen 5 zeichen weggeschnitten werden und hinten 7 zeichen.
die endung soll dabei erhalten bleiben.
krename macht dies ganz gut blos das kann ich nicht auf mein server nutzen da ich dort keine grafische benutzeroberfläche habe.
z.b.
renamebin verzeichnis/ -b5 -a7 -e
bevor halt 5 zeichen abschneiden after gleich 7 und das -e soll dabei den erweiterungs typ erhalten.
so einfach sollte es jedenfalls sein alles andere ist nichts für mich.
danke.
Re: suche aehnlich krename blos fürs terminal
Hallo,
wenn es kein fertiges tool geben sollte, wäre ein kleines Script eine Möglichkeit.
Hier der Verzeichnisinhalt:
Und die Ausgabenach der Bearbeitung mit Python:
Wenn ich dazu komme, packe ich das mal in ein fertiges Script.
Gruß Matthias
wenn es kein fertiges tool geben sollte, wäre ein kleines Script eine Möglichkeit.
Hier der Verzeichnisinhalt:
Code: Alles auswählen
user@debbi:~/datei_abschneiden$ ls
12345bla7654321.txt 12345fasel7654321.txt
Code: Alles auswählen
user@debbi:~$ python
Python 2.5.2 (r252:60911, Sep 29 2008, 21:15:13)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> datei = os.listdir("/home/user/datei_abschneiden")
>>> for datei in datei:
... datei[5: len(datei) -11] + datei[-4:]
... print datei
...
'fasel.txt'
12345fasel7654321.txt
'bla.txt'
12345bla7654321.txt
Gruß Matthias
Re: suche aehnlich krename blos fürs terminal
Hallo,
als Nachtrag und ohne Netz und doppelten Boden und also auch ohne Fehlerbehandlung;
d.h. folgendes wird auf alle Dateien im pwd angewandt:
Inhalt von d.py:Gruß Matthias
als Nachtrag und ohne Netz und doppelten Boden und also auch ohne Fehlerbehandlung;
d.h. folgendes wird auf alle Dateien im pwd angewandt:
Code: Alles auswählen
user@debbi:~/datei_abschneiden$ ls
12345bla7654321.txt 12345fasel7654321.txt d.py
user@debbi:~/datei_abschneiden$ python d.py
user@debbi:~/datei_abschneiden$ ls
bla.txt d.py fasel.txt
Code: Alles auswählen
#!/usr/bin/python
import os
oldfile = os.listdir(".")
for file in oldfile:
newfile = file[5: len(file) -11] + file[-4:]
os.rename(file, newfile)
Re: suche aehnlich krename blos fürs terminal
Code: Alles auswählen
(yeti@xs3:3)/tmp/yeti$ ls
12345bla7654321.txt 12345fasel7654321.png
(yeti@xs3:3)/tmp/yeti$ ls | sed 's|^.....\(.*\).......\(\..*\)|mv \0 \1\2|'
mv 12345bla7654321.txt bla.txt
mv 12345fasel7654321.png fasel.png
Code: Alles auswählen
(yeti@xs3:3)/tmp/yeti$ ls | sed 's|^.....\(.*\).......\(\..*\)|mv \0 \1\2|' | sh
(yeti@xs3:3)/tmp/yeti$ ls
bla.txt fasel.png
Re: suche aehnlich krename blos fürs terminal
Doppelpost.
Zuletzt geändert von tomas_ am 02.12.2008 15:11:49, insgesamt 1-mal geändert.
Re: suche aehnlich krename blos fürs terminal
Zeit fuer die zsh:
Gruss
tomas
ps: Der Befehl geht davon aus, dass die Dateinamen entsprechend lang sind und eine Endgung besitzen.
Code: Alles auswählen
> ls
12345bar7654321.txt 12345foo7654321.txt
> zmv '(*).(*)' '${1[6,-8]}.$2'
> ls
bar.txt foo.txt
tomas
ps: Der Befehl geht davon aus, dass die Dateinamen entsprechend lang sind und eine Endgung besitzen.
Re: suche aehnlich krename blos fürs terminal
weshalb nicht direkt mit den Standard-Shelltools:
(ungetestet)
ansonsten habe ich von `emv' gehört, das ganz nett sein soll: http://www.pro-linux.de/berichte/appfokus/emv/emv
Code: Alles auswählen
for i in * ; do
mv "$i" "`echo $i | sed 's/^.....// ; s/.......\(\.[^.]*\)$/\1/'`";
done
ansonsten habe ich von `emv' gehört, das ganz nett sein soll: http://www.pro-linux.de/berichte/appfokus/emv/emv
Use ed once in a while!
Re: suche aehnlich krename blos fürs terminal
http://packages.debian.org/lenny/mrename
Gruss und frohes Fest
Gruss und frohes Fest
Re: suche aehnlich krename blos fürs terminal
Hallo,
@seraphyn: kannst Du das auch anhand eines Beispieles umsetzen, welches dem Problem
von Ework (der ja auch mal was dazu sagen könnte) entspricht ?
Gruß Matthias
@seraphyn: kannst Du das auch anhand eines Beispieles umsetzen, welches dem Problem
von Ework (der ja auch mal was dazu sagen könnte) entspricht ?
Gruß Matthias