Bestanden in directory een extensie geven

Windows, Android, iOS, Linux, Chrome OS, ...
Plaats reactie
Gebruikersavatar
AnD
Elite Poster
Elite Poster
Berichten: 4069
Lid geworden op: 18 okt 2003, 12:29
Locatie: Hasselt
Uitgedeelde bedankjes: 431 keer
Bedankt: 115 keer
Provider

Ik heb hier een deel bestanden die geen extensie hebben, enkele heb ik de extensie smc (het zijn roms) gegeven,
maar hoe kan ik die in één keer een extensie geven ipv die één voor één af te gaan ?
Het is onder ubuntu (xbmc live)
Gebruikersavatar
Sub Zero
Administrator
Administrator
Berichten: 6181
Lid geworden op: 15 sep 2002, 12:14
Locatie: Herzele
Uitgedeelde bedankjes: 74 keer
Bedankt: 121 keer

for i in `ls | grep -v *.smc` ; do mv $i ${i}.smc ; done

Dit zal alle bestanden die nog geen .smc extensie hebben hernoemen naar filename.smc
Afbeelding
Gebruikersavatar
AnD
Elite Poster
Elite Poster
Berichten: 4069
Lid geworden op: 18 okt 2003, 12:29
Locatie: Hasselt
Uitgedeelde bedankjes: 431 keer
Bedankt: 115 keer
Provider

Ik heb dat eens geprobeerd, maar dan krijg ik wat meldingen.

Code: Selecteer alles

mv: cannot stat `Binary': No such file or directory
mv: cannot stat `file': No such file or directory
mv: cannot stat `matches': No such file or directory
En ik heb gezien dat 1 bestand (alhoewel er 2 smc bestanden in die directory zijn) dat al een *.smc bestand was er telkens .smc bijkomt te staan.
Ik heb dat commando 2 maal uitgevoerd en nu heb ik dus bij 1 bestand => Zoop.smc.smc.smc
Vreemd dat het andere smc bestand niet is aangepast, maar gewoon is gebleven.
Gebruikersavatar
Ofloo
Elite Poster
Elite Poster
Berichten: 5271
Lid geworden op: 04 okt 2004, 07:36
Locatie: BALEN
Uitgedeelde bedankjes: 57 keer
Bedankt: 92 keer

Code: Selecteer alles

find . -not -iname "*.smc" -type f -exec mv {} {}.smc \;
misschien

Code: Selecteer alles

find . -not -iname "*.smc" -type f -exec mv "{}" "{}.smc" \;
voorbeeld:

Code: Selecteer alles

$ ls
123  234  456.smc  567  67 8
$ find . -not -iname "*.smc" -type f -exec mv {} {}.smc \;
$ ls
123.smc  234.smc  456.smc  567.smc  67 8.smc 
TIP: de quotes hangen af van de shell omgeving dat je het uitvoert, soms is het vereist soms niet. Voeg -maxdepth 1 toe als je niet recursive wil.
duizend
Elite Poster
Elite Poster
Berichten: 3665
Lid geworden op: 23 apr 2008, 20:36
Uitgedeelde bedankjes: 176 keer
Bedankt: 336 keer
Recent bedankt: 1 keer

opstarten met een dos disketteke ...

ren *.* *.smc

et voila

of moet het perse in unix
ubremoved_15739
Elite Poster
Elite Poster
Berichten: 2831
Lid geworden op: 13 jul 2010, 13:21
Uitgedeelde bedankjes: 599 keer
Bedankt: 532 keer

TS vermeldt Ubuntu.
Dan zal je met een DOS diskette niet ver geraken....
Nog afgezien van de grootte van de HD. :wink:

"Rename" is normaliter ook beschikbaar in bash: linkje.
Gebruikersavatar
Ofloo
Elite Poster
Elite Poster
Berichten: 5271
Lid geworden op: 04 okt 2004, 07:36
Locatie: BALEN
Uitgedeelde bedankjes: 57 keer
Bedankt: 92 keer

duizend schreef:opstarten met een dos disketteke ...

ren *.* *.smc

et voila

of moet het perse in unix
dat werkt niet ! omdat er bestanden zijn die niet *.* matchen bv "blah" moet blah.smc worden met jouw methode gebeurd dit niet !

dos ondersteund ook geen ext1~3 bij mijn weten en als jij altijd met dos diskettekes ligt te prutsen telkens als je iets in je console moet doen amai dan. is meer werk dan gewoon ze één voor één zelf te rename.

ook nog niet elk systeem kan zomaar ff afgesloten worden, toch zeker niet voor zulk een belachelijke taak, ..

hij zou rename wel kunnen gebruiken om de dubbele extensies er uit te halen.
Gebruikersavatar
AnD
Elite Poster
Elite Poster
Berichten: 4069
Lid geworden op: 18 okt 2003, 12:29
Locatie: Hasselt
Uitgedeelde bedankjes: 431 keer
Bedankt: 115 keer
Provider

Code: Selecteer alles

    find . -not -iname "*.smc" -type f -exec mv "{}" "{}.smc" \;
Dit commando heeft ze allemaal perfect aangepast ;)
duizend
Elite Poster
Elite Poster
Berichten: 3665
Lid geworden op: 23 apr 2008, 20:36
Uitgedeelde bedankjes: 176 keer
Bedankt: 336 keer
Recent bedankt: 1 keer

Ofloo schreef:
dat werkt niet ! omdat er bestanden zijn die niet *.* matchen bv "blah" moet blah.smc worden met jouw methode gebeurd dit niet !

dos ondersteund ook geen ext1~3 bij mijn weten en als jij altijd met dos diskettekes ligt te prutsen telkens als je iets in je console moet doen amai dan. is meer werk dan gewoon ze één voor één zelf te rename.

ook nog niet elk systeem kan zomaar ff afgesloten worden, toch zeker niet voor zulk een belachelijke taak, ..

hij zou rename wel kunnen gebruiken om de dubbele extensies er uit te halen.
werkt wel, dos renamed dan ALLE files ook blah zonder extensie.

Accessing Ext from DOS, Windows 9x/NT and other Unixes (LTools)
Homepage: http://www.it.fht-esslingen.de/~zimmerm ... tools.html

Ik toon gewoon aan dat het met dos ongeloofelijk simpel kan
als ge ziet wat je in unix moet intypen ...

topicstarter heeft er minstens twee dagen over gedaan om een oplossing in unix te vinden.
dan is het opstarten met een dos disketteke toch veeeel rapper :angel:

soms doet microsoft ook al eens iets goed hé :twisted:
Gebruikersavatar
AnD
Elite Poster
Elite Poster
Berichten: 4069
Lid geworden op: 18 okt 2003, 12:29
Locatie: Hasselt
Uitgedeelde bedankjes: 431 keer
Bedankt: 115 keer
Provider

topicstarter heeft er minstens twee dagen over gedaan om een oplossing in unix te vinden.
dan is het opstarten met een dos disketteke toch veeeel rapper :angel:

soms doet microsoft ook al eens iets goed hé :twisted:
Ik heb geen 2 dagen gezocht want Ofloo heeft me de oplossing gegeven
en gisteren kon ik het niet testen omdat ik het te druk had anders wist ik het maandag al. ;)
Microsoft heeft DOS trouwens niet opgebouwd van scratch maar het is ooit gekocht geweest van Tim Paterson,
die man had CP/M-80 gemaakt en Microsoft heeft het wat aangepast om aan de wensen van IBM te voldoen.

Edit: je commando onder dos werkt wel, dat is juist :)
Gebruikersavatar
Ofloo
Elite Poster
Elite Poster
Berichten: 5271
Lid geworden op: 04 okt 2004, 07:36
Locatie: BALEN
Uitgedeelde bedankjes: 57 keer
Bedankt: 92 keer

volgens mij niet een bestand zonder extensie heeft geen . dus * < match all . < match dot * < match all dus volgens mij zolang er geen extensie aan het bestand hangt wordt dit niet opgenomen, kan me vergissen onder dos is ondertussen zeker al 10 jaar geleden dat ik het nog gebruikt hebt maar !!! onder linux werkt dit allesinds niet.

Code: Selecteer alles

$ ls
blah  blah.txt
$ ls *.*
blah.txt
$ for x in *.*; do echo $x; done
blah.txt
$ for x in *; do echo $x; done
blah
blah.txt
$ 
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 434 keer
Bedankt: 1972 keer

Alles renamen zonder extensie kan je in DOS gewoon door REN *. *.ext

Als je REN *.* *.ext doet ga je dubbele extensies krijgen voor files die al een extensie hebben.

Kan Linux dit niet *. ?
Gebruikersavatar
AnD
Elite Poster
Elite Poster
Berichten: 4069
Lid geworden op: 18 okt 2003, 12:29
Locatie: Hasselt
Uitgedeelde bedankjes: 431 keer
Bedankt: 115 keer
Provider

Ja ik bedoelde voor bestanden die geen extensie hebben, die krijgen dan een extensie in dos,
maar zoals je zegt ga je een dubbele extensie krijgen als er al bestanden zijn die dus een extensie hebben.
Gebruikersavatar
Ofloo
Elite Poster
Elite Poster
Berichten: 5271
Lid geworden op: 04 okt 2004, 07:36
Locatie: BALEN
Uitgedeelde bedankjes: 57 keer
Bedankt: 92 keer

r2504 schreef:Alles renamen zonder extensie kan je in DOS gewoon door REN *. *.ext

Als je REN *.* *.ext doet ga je dubbele extensies krijgen voor files die al een extensie hebben.

Kan Linux dit niet *. ?

Code: Selecteer alles

$ ls *.
ls: kan geen toegang krijgen tot *.: Bestand of map bestaat niet
$ 
waarschijnlijk omdat directory . aanwezig is, gewoon * wel maar punt is dat je dan alles van naam verandert, ..

TIP: trouwens als je de dubbele er wil uithalen kan dit met basename, voor 3dubbele moet je het wel 2 keer draaien.

Code: Selecteer alles

$ ls
1 23.smc.smc  123.smc.smc  234.smc.smc.smc  456.smc  blah
$ find -iname "*.smc.smc" -type f -exec sh -c 'mv "{}" "$(basename "{}" .smc)"' \;
$ ls
1 23.smc  123.smc  234.smc.smc	456.smc  blah
$ find -iname "*.smc.smc" -type f -exec sh -c 'mv "{}" "$(basename "{}" .smc)"' \;
$ ls
1 23.smc  123.smc  234.smc  456.smc  blah
$ 
Plaats reactie

Terug naar “Software en apps”