Hele zoot bestanden renamen.

Pagina: 1
Acties:

  • dinges
  • Registratie: September 2000
  • Niet online
hoi!

ik heb net een hele zoot jpegjes gedownload en nu wil ze allemaal systematisch renamen (pic00001, pic00002, pic00003, etc. etc. etc.). het enige probleem is dat ze allemaal in subdirs staan.
ik kan ze ook niet eerst allemaal in dezelfde map zetten en daarna pas renamen want er zijn veel plaatjes met dezelfde namen. dus dan zou ik een hele zoot plaatjes overschrijven.

zo staan ze in de subdirs
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|1
 -> 01
    -> *.jpg
 -> 02
    -> *.jpg
 -> 03
    -> *.jpg
 .
 .
 -> 13
    -> *.jpg
|2
 -> Fjortis1
    -> *.jpg
 -> Fjortis2
    -> *.jpg
 -> Fjortis3
    -> *.jpg
 .
 .
 -> Fjortis48
    -> *.jpg
|3
 -> 01
    -> *.jpg
 -> 02
    -> *.jpg
 -> 03
    -> *.jpg
 .
 .
 -> 09
    -> *.jpg
|4
 -> 01
    -> *.jpg
 -> 02
    -> *.jpg
 -> 03
    -> *.jpg
 .
 .
 -> 13
    -> *.jpg

en ik wil alle plaatjes in /home/dinges/pics/sorted
Wie helpt mij aan een goed (perl/shell)scriptje??


PS. ik weet niet of dit het goeie forum is :P maar ja... zal wel goed zijn ;)
het staat allemaal op een Slackware bak dus het heeft ook met NOS te maken ;)

PSN: Houtvlot


  • Jooner
  • Registratie: September 2001
  • Laatst online: 13-02 11:19

Jooner

Jooner has a Life of Agony

ik wil wel een poging wagen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
let i=1
ls -1 |while read directory_level_1
do
   ls -1 $direcory_level_1 |while read directory_level_2
# 2 levels diep he..
   do
     ls -1 $directory_level_2 |while read filename
     do
         mv $(fname $filename) /home/dinges/pics/sorted/pic00$i.jpg
         let i=$1 +1 
     done
   done
done

zoiets dus, kweenie of fname op linux bestaat, naders moet je iets anders verzinnen om de filename op te halen ( $pwd/$directory_level_1/directory_level_2/$filename ofsow )

suc6

Please excuse any spelling mistakes. I have dyslexic fingers.


  • dinges
  • Registratie: September 2000
  • Niet online
Op donderdag 27 december 2001 15:50 schreef Jooner het volgende:
ik wil wel een poging wagen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
let i=1
ls -1 |while read directory_level_1
do
   ls -1 $directory_level_1 |while read directory_level_2
# 2 levels diep he..
   do
     ls -1 $directory_level_2 |while read filename
     do
         mv $(fname $filename) /home/dinges/pics/sorted/pic00$i.jpg
         let i=$1 +1 
     done
   done
done

zoiets dus, kweenie of fname op linux bestaat, naders moet je iets anders verzinnen om de filename op te halen ( $pwd/$directory_level_1/directory_level_2/$filename ofsow )

suc6
hmm...
hij werkt niet
ik weet ook bijna niks van scripten af dus ik heb geen idee wat ik zou moeten verbeteren :P

PSN: Houtvlot


  • Apache
  • Registratie: Juli 2000
  • Laatst online: 17-08 14:28

Apache

amateur software devver

in php zou het me wel lukken maar k'denk dat een bash scriptje hiervoor idd het handigst is ;)

Moest m'n servertje niet down zijn zou ik het proberen, k'denk dat het best te doen is

-> ls
-> filename zoeken
-> mv filename nieuwefilename

en anders doe je het toch ff manueel :D

If it ain't broken it doesn't have enough features


  • dinges
  • Registratie: September 2000
  • Niet online
Op donderdag 27 december 2001 18:36 schreef Apache het volgende:
en anders doe je het toch ff manueel :D
dinges@Server:~$ find fjortis | grep jpg | wc -l
14440

;)
ik dank vriendelijk :P
maar ik heb totaal geen ervaring met scripten... dit is dus een goeie manier om te leren :P
ik knoei weer verder

PSN: Houtvlot


Verwijderd

Misschien is een script dat een script aanmaakt dat de bestanden renamed een idee :)

Dus eerst een lijst maken met alle bestanden
Dan met awk de regels editten dat er mv voor komt en de gewenste bestandsnaam erachter.
Vervolgens het scipt runnen, al dan niet automagisch :)

  • odysseus
  • Registratie: Augustus 2000
  • Nu online

odysseus

Debian GNU/Linux Sid

Wel, een inefficiente manier zou zit zijn, denk ik:
code:
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/perl
$dir = '/dir/waar/het/in/moet/komen`;
$i = 0;
$files = `ls -R | grep -v ^.`; #Aangenomen dat je geen plaatjes hebt die met een punt beginnen.
@files = split (/\n/, $files);
foreach $file (@files)
{
  `mv $file /$dir/$i_$file`;
  $i++;
}

Ook hier geld weer dat de code uit mijn blote hoofd komt, dat vantevoren testen aangeraden wordt en dat er geen garanties gegeven worden voor een goede werking :) .

Leven is het meervoud van lef | In order to make an apple pie from scratch, you must first create the universe.


  • MyDyingBride
  • Registratie: November 2001
  • Laatst online: 28-07 20:19
code:
1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash

TELLER=0
BASEDIR=/dir/waar/plaatjes/staan
DIRNAAR=/dir/waar/plaatjes/naar/toe/moeten

find $BASEDIR -name "*.jpg" | while read LINE
do 
  mv $LINE $DIRNAAR/$TELLER.jpg
  ((TELLER++))
done

Ook hier weer geen garanties, eerst even een backup maken !!

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 16-08 16:08

deadinspace

The what goes where now?

Op donderdag 27 december 2001 22:40 schreef odysseus het volgende:
Wel, een inefficiente manier zou zit zijn, denk ik:
code:
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/perl
$dir = '/dir/waar/het/in/moet/komen`;
$i = 0;
$files = `ls -R | grep -v ^.`; #Aangenomen dat je geen plaatjes hebt die met een punt beginnen.
@files = split (/\n/, $files);
foreach $file (@files)
{
  `mv $file /$dir/$i_$file`;
  $i++;
}

Ook hier geld weer dat de code uit mijn blote hoofd komt, dat vantevoren testen aangeraden wordt en dat er geen garanties gegeven worden voor een goede werking :) .
Ik zou de files als volgt verzamelen:
code:
1
$files = `find -type f`

  • dinges
  • Registratie: September 2000
  • Niet online
Op vrijdag 28 december 2001 00:00 schreef deadinspace het volgende:

[..]

Ik zou de files als volgt verzamelen:
code:
1
$files = `find -type f`
WOEI!
het werkt :D
dank jullie

nog 1 vraagje.
is er een manier om te zorgen dat ze allemaal 4 cijfers hebben?
dus dat er pic_0001 uitkomt en niet pic_1 ?

PSN: Houtvlot


Verwijderd

Ik ben nog van de oude stempel en gebruik voor al mijn handelingen nog Windows commander en kwam er laatst achter dat er een handig "Multi Rename" tooltje in zit, misschien heb je daar wat aan.

Verwijderd

Damn het zal wel laat worden, ik dacht bijna dat ik Windows las in dit topic >:) :+

Verwijderd

tja, ik ga maar slapen denk.

}:O

  • dinges
  • Registratie: September 2000
  • Niet online
Op vrijdag 28 december 2001 00:15 schreef nelske het volgende:
Damn het zal wel laat worden, ik dacht bijna dat ik Windows las in dit topic >:) :+
:D
ja... stel je toch eens voor ;)
gelukkig maar dat zulke dingen hier niet gebeuren...

PSN: Houtvlot


  • dinges
  • Registratie: September 2000
  • Niet online
Op vrijdag 28 december 2001 00:13 schreef dinges het volgende:
nog 1 vraagje.
is er een manier om te zorgen dat ze allemaal 4 cijfers hebben?
dus dat er pic_0001 uitkomt en niet pic_1 ?
(yeah! ik quote mezelf ;))
ik heb het zelf maar ff opgelost... ziet er niet echt netjes uit maar het werkt...
TIMTOWTDI ;)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/perl
$dir = "home/dinges/pics/sorted";
$i = 1;
$files = `find -type f`;
@files = split (/\n/, $files);
foreach $file (@files)
{
if ($i < 10) {
  `mv $file /$dir/pic000$i.jpg`;
  $i++; }
if ($i > 9 && $i < 100) {
  `mv $file /$dir/pic00$i.jpg`;
  $i++; }
if ($i > 99 && $i < 1000) {
  `mv $file /$dir/pic0$i.jpg`;
  $i++; }
if ($i > 999 && $i < 10000) {
  `mv $file /$dir/pic$i.jpg`;
  $i++; }
}

PSN: Houtvlot


  • Pietert
  • Registratie: Januari 2001
  • Niet online

Pietert

There is no spoon

oops... nutteloze post, sorry

#huiskamer | Amsterdammert | Some days you're the pigeon, some days you're the statue | Zenbook S13 UM5302TA-LV067W | LG 40WP95CP-W | HP USB-C dock G5

Pagina: 1