suche aehnlich krename blos fürs terminal

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
Ework
Beiträge: 401
Registriert: 11.07.2006 02:33:41
Wohnort: Heidelberg

suche aehnlich krename blos fürs terminal

Beitrag von Ework » 30.11.2008 22:47:04

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.

Methusalix

Re: suche aehnlich krename blos fürs terminal

Beitrag von Methusalix » 01.12.2008 17:58:16

Hallo,
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
Und die Ausgabenach der Bearbeitung mit Python:

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
Wenn ich dazu komme, packe ich das mal in ein fertiges Script.
Gruß Matthias

Methusalix

Re: suche aehnlich krename blos fürs terminal

Beitrag von Methusalix » 02.12.2008 01:29:51

Hallo,
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
Inhalt von d.py:

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)
Gruß Matthias

yeti

Re: suche aehnlich krename blos fürs terminal

Beitrag von yeti » 02.12.2008 07:25:08

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
Wenn der Output des letzten Kommandos ausschaut wie gewünscht, dann per Pipe SH vorwerfen:

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

tomas_
Beiträge: 13
Registriert: 02.06.2006 14:43:10

Re: suche aehnlich krename blos fürs terminal

Beitrag von tomas_ » 02.12.2008 15:01:36

Doppelpost.
Zuletzt geändert von tomas_ am 02.12.2008 15:11:49, insgesamt 1-mal geändert.

tomas_
Beiträge: 13
Registriert: 02.06.2006 14:43:10

Re: suche aehnlich krename blos fürs terminal

Beitrag von tomas_ » 02.12.2008 15:02:50

Zeit fuer die zsh:

Code: Alles auswählen

> ls
12345bar7654321.txt  12345foo7654321.txt

> zmv '(*).(*)' '${1[6,-8]}.$2'

> ls
bar.txt foo.txt
Gruss
tomas

ps: Der Befehl geht davon aus, dass die Dateinamen entsprechend lang sind und eine Endgung besitzen.

Benutzeravatar
Meillo
Moderator
Beiträge: 9279
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: suche aehnlich krename blos fürs terminal

Beitrag von Meillo » 03.12.2008 09:57:34

weshalb nicht direkt mit den Standard-Shelltools:

Code: Alles auswählen

for i in * ; do
  mv "$i" "`echo $i | sed 's/^.....// ; s/.......\(\.[^.]*\)$/\1/'`";
done
(ungetestet)


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!


Methusalix

Re: suche aehnlich krename blos fürs terminal

Beitrag von Methusalix » 13.12.2008 02:18:13

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

Antworten