PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dateinamen umstellen



lutz29_de
30-05-2005, 10:55
Hallo zusammen,

ich muss unter Suse 8.2 regelmäßig die Namen von Dateien, die per ftp reinkommen, folgendermassen umstellen.
Idealerweise natürlich automatisch in einem script, das dann als cronjob läuft:

z.B.
s_085174_20050415.0000289
s_085174_20050416.0000290 in

20050415_s_085174_0000289.txt
20050416_s_085174_0000290.txt


Wie kann ich dies am einfachsten bewerkstelligen?

danke im voraus.
Lutz

klewan
30-05-2005, 14:10
mal davon ausgegangen die file namen sind immer gleich lang :] und alle files in einem verzeichnis :-)




for x in *.0000*; do
mv -v "$x" "${x:9:8}_s_${x:2:6}_${x:18:7}.txt"
done;

Joghurt
30-05-2005, 15:02
Wenn perl installiert ist, solltest du auch rename haben, damit geht es dann einfach:
rename 's/(.+?)(\.txt)?/$1.txt/' *Achte auf die einfachen Anführungszeichen!

PS: Wenn das Verzeichnis viele Dateien enthält, musst du evtl mit
find . -maxdepth 1 -type f| xargs rename 's/..../' arbeiten.

lutz29_de
30-05-2005, 16:41
schönen Dank für die schnelle Hilfe

bash_azubi
30-05-2005, 20:47
for x in *.0000*; do
mv -v "$x" "${x:9:8}_s_${x:2:6}_${x:18:7}.txt"
done;
Unter welchem Stichpunkt ist das in der manpage der bash zu finden?
Das ist genial :)

EDIT:
Habs unter ' Substring Expansion' gefunden :)

klewan
31-05-2005, 07:16
bash string manipulation :-)

damit kann man 90% der string dinge machen *fg+