[bash]scriptje voor een stukje uit bestandsnaam halen

Pagina: 1
Acties:

  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 20-05 17:44
owkay, stukje dir:
code:
1
2
3
P7230082.JPG_tn.jpg
P7230087.JPG_tn.jpg
P7230088.JPG_tn.jpg

en t stukje met _tn.jpg moet er dus af

ik heb nu al
code:
1
for i in `ls|grep _tn`;do mv $i;done

maar achter die mv moet nog iets, maar wat, k d8 aan cut maar die is t nie

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


  • silentsnow
  • Registratie: Maart 2001
  • Laatst online: 15-04-2013

silentsnow

« '-_-' »

kan je niet gewoon dit doen:

ren *.JPG_tn.jpg *.JPG

doen :?

The trade of the tools
[ me | specs ] Klipsch Promedia Ultra 5.1 + Sennheiser HD-590


  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 20-05 17:44
ow sorry, tis voor een slackbak dus. er had [linux] in de titel gemoeten, sorry :{

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


  • silentsnow
  • Registratie: Maart 2001
  • Laatst online: 15-04-2013

silentsnow

« '-_-' »

Super_ik schreef op 13 september 2002 @ 22:09:
ow sorry, tis voor een slackbak dus. er had [linux] in de titel gemoeten, sorry :{
ow hehe. Dan kan ik je niet helpen :(

The trade of the tools
[ me | specs ] Klipsch Promedia Ultra 5.1 + Sennheiser HD-590


  • Wilke
  • Registratie: December 2000
  • Laatst online: 13:00
nee je kunt dus geen 'ren' doen want dat commando heet sowieso 'mv' (welkom in NOS), in in DOS zou je dit sowieso wel kunnen vergeten :)

Dit is denk ik de kortste versie die ik in bash zo kan bedenken:

code:
1
for i in `ls -b *_tn*`; do mv $i `echo $i | cut -d_ -f1`; done


toelichting: cut -d_ -f1 neemt het 1e veld ('field') uit de invoer, waarbij het scheidingsteken ('delimeter') de _ is. Omdat cut alleen werkt op std-in voor zover ik weet, moet je dus even met 'echo' zorgen dat het invoer word...beetje omslachtig, als iemand dat beter kan let me know :)

  • hammerhead
  • Registratie: April 2000
  • Laatst online: 07:47
je kunt ook gebruik maken van basename

Wordt dan iets van:
code:
1
for i in *_tn.jpg ; do mv $i  `basename $i _tn.jpg` ; done


Pas op, code is niet getest...
Altijd wel even backup maken van je bestaande bestanden voordat je dit test :)

Aviation is proof that given the will, we have the capacity to achieve the impossible.
--Eddie Rickenbacker


  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 17-05 14:06

deadinspace

The what goes where now?

Hier is het heldenprog "rename" voor uitgevonden :)
rename rename-t files (goh) aan de hand van een regexp: iets van "rename regexp files".
rename zit hier in de package "perl" (omdat het een perl scrippie is).

  • SvMp
  • Registratie: September 2000
  • Niet online
Super_ik schreef op 13 september 2002 @ 22:09:
ow sorry, tis voor een slackbak dus. er had [linux] in de titel gemoeten, sorry :{
Je hebt de titel juist heel goed gedaan!

Bash is een algemene Unix-shell. De commando's die de oplossing zijn voor je probleem zijn ook algemene Unix-commando's. Ze hebben weinig te maken met het feit dat jouw bak toevallig een Slackbak is. Als deze vraag voor bijvoorbeeld een FreeBSD machine zou zijn gesteld, was het antwoord precies hetzelfde :)

  • MyDyingBride
  • Registratie: November 2001
  • Laatst online: 19-04 20:18
't kan ook met sed:
code:
1
for i in *_tn.jpg ; do mv $i  `echo $i|sed s/JPG_tn.//` ; done


Het is maar net wat je het leukst/handigst vindt.

Verwijderd

Mijn geprutsel :

code:
1
2
3
4
5
6
7
8
9
f=`mktemp XXXXXX`
ls -1 >$f
while read lijn ;do
  hulp=${lijn%_tn.jpg}
  if [ $hulp != $lijn ] ; then
    mv $lijn $hulp
  fi
done <$f
rm -f $f


Als er info nodig is just let me know >:)

ps tziet er erger uit dan wat het is, heb er maar 10min aan bezig geweest
Tis niet meteen efficient maar et werkt en je kan het gemakkelijk uitbreiden :)

  • sebas
  • Registratie: April 2000
  • Laatst online: 16-12-2025
perl -e s/_tn\.jpg//

perl vind ik voor dit soort taken nog altijd de meest 'straigte' oplossing. (Me regex klopt vast niet helemaal, maar dat wijten we maar aan het bier, mmkay ;))

Everyone complains of his memory, no one of his judgement.

Pagina: 1