recursief batch hernoemen

Pagina: 1
Acties:

  • Trax_Digitizer
  • Registratie: Januari 2002
  • Laatst online: 31-12-2025

Trax_Digitizer

are we there yet?

Topicstarter
Ik heb zitten zoeken op GoT en google en kom er eigenlijk niet goed uit. Er is een map, laten we zeggen /data/, en daarin zit een hele structuur van mappen en bestanden. Ik wil /data/ recursief doorzoeken en alle *.HTM files renamen naar *.HTML
Nu heb ik al verschillende scriptjes gezien, maar die zijn allemaal niet recursief en die werken toch niet helemaal vlekkeloos. Kan iemand mij op weg helpen?

  • Jelmer
  • Registratie: Maart 2000
  • Laatst online: 21:34
find /data -name \*.HTM -exec mv {} {}L \;

({} -> is de filename, {}L plakt daar dus een L achter ;))

  • usr-local-dick
  • Registratie: September 2001
  • Niet online
find /data -name \*.HTM -exec mv {} {}L \;
Deze is idd makkelijk, als je de andere kant op moet (letters eraf) wordt hij ingewikkelder...

  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 12-03 14:25

DeMoN

Pastafari

usr-local-dick schreef op vrijdag 12 augustus 2005 @ 15:46:
[...]


Deze is idd makkelijk, als je de andere kant op moet (letters eraf) wordt hij ingewikkelder...
Iemand een voorbeeld?

Dat is sowieso altijd wel leuk om hier te vragen, de ene kan dat natuurlijk weer korter dan de ander :P

In bash zou ik het niet weten, alleen met een for loopje?

Ik schrijf altijd gewoon snel een python script :P

Ben benieuwd :)

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


  • u_nix_we_all
  • Registratie: Augustus 2002
  • Niet online
DeMoN schreef op vrijdag 12 augustus 2005 @ 16:20:
[...]


Iemand een voorbeeld?

Dat is sowieso altijd wel leuk om hier te vragen, de ene kan dat natuurlijk weer korter dan de ander :P

In bash zou ik het niet weten, alleen met een for loopje?

Ik schrijf altijd gewoon snel een python script :P

Ben benieuwd :)
Ik weet ook niets beter dan een for loopje, maar dat is makkelijker dan een
python scriptje (voor mij dan iig) :+
code:
1
for file in `find *.HTML`; do mv $file `echo $file|sed s/.HTML/.HTM/g`; done

You don't need a parachute to go skydiving. You need a parachute to go skydiving twice.


  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 12-03 14:25

DeMoN

Pastafari

u_nix_we_all schreef op vrijdag 12 augustus 2005 @ 16:51:
[...]


Ik weet ook niets beter dan een for loopje, maar dat is makkelijker dan een
python scriptje (voor mij dan iig) :+
code:
1
for file in `find *.HTML`; do mv $file `echo $file|sed s/.HTML/.HTM/g`; done
code:
1
for file in `ls *.html`; do mv $file `echo $file|sed s/.html/.htm/`; done


Die g van sed is niet nodig omdat het toch al een loop is en find is een beetje zwaar als je ook ls kan gebruiken >:)

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


  • JaWi
  • Registratie: Maart 2003
  • Laatst online: 14-01 21:58

JaWi

maak het maar stuk hoor...

Poeh, of je gebruikt "mmv" om hetzelfde te bereiken...

Lettertje eraf:
code:
1
mmv "*.htm" "=1.html"


Lettertje erbij:
code:
1
mmv "*.html" "=1.htm"

Statistics are like bikinis. What they reveal is suggestive, but what they hide is vital.


  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 14-03 12:48

deadinspace

The what goes where now?

Maar die twee werken niet met enorme hoeveelheden bestanden (dan is de argument list te lang), en ze gaan over hun nek bij spatie's.
code:
1
find -type f -iname \*.HTM -exec rename 's/\.HTM$/\.HTML/' '{}' \;

Zou dat allemaal wel doen (uitgaande van regexp-rename, zoals bij Debians perl zit), maar deze heeft wel als nadeel dat hij rename aanroept voor elke file, dus hij zal niet al te snel zijn.

Overigens vergeten een aantal mensen de $ in de regexp. Die is wel nodig, anders ziet de file HTML.HTM er na het renamen uit als HTMLL.HTM (of HTMLL.HTML als je /g doet) ;)

En als ik dan toch aan het zeuren ben :P... Ik ben een groot voorstander van $() ipv ``... Veel leesbaarder :)

[ Voor 7% gewijzigd door deadinspace op 12-08-2005 17:43 ]

Pagina: 1