/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Masseomdøbning af filer
Fra : Thomas D


Dato : 29-05-03 00:21

Hej,

Jeg har et dir med en masse filer som stammer fra en workstation med et
andet styresystem(et hvor man ska sælge sin sjæl for at bruge det eller
noget i den retning).
Mange af filerne hedder noget i stil med:
"Langt Filnavn med mellemrum.txt"

Jeg vil så gerne rename alle filerne til noget i stil med:
"lang_filnavn_med_mellemrum.txt"

Altså jeg vil
- Erstatte upper case begyndelsesbogstaver (eller måske alle store
bogstaver, har lidt brug for at ku begge dele) med lower case.
- Erstatte space med underscore.

Er det noget mv og sed s/\ /_/g jeg skal kombinere?

Er lidt lost her, men håber at det kan lade sig gøre?

Mvh
Thomas



 
 
Topper (29-05-2003)
Kommentar
Fra : Topper


Dato : 29-05-03 07:31

> Mange af filerne hedder noget i stil med:
> "Langt Filnavn med mellemrum.txt"
>
> Jeg vil så gerne rename alle filerne til noget i stil med:
> "lang_filnavn_med_mellemrum.txt"
>
> Altså jeg vil
> - Erstatte upper case begyndelsesbogstaver (eller måske alle store
> bogstaver, har lidt brug for at ku begge dele) med lower case.
> - Erstatte space med underscore.
>
> Er det noget mv og sed s/\ /_/g jeg skal kombinere?
>

Jeg har ikke helt styr på lowercase tingen endnu men du kan starte med at
kigge på dette:

Jeg tror at du skal bruge noget ala dette (måske ploppet i et shellscript)

#find gruppen af filer du vil have omdøbt
filer=`find . -name '*.txt* -print`

#iterér gennem gruppen
for fil i $filer ; do

# generer filens nye navn
nytnavn=`echo $fil | sed s/\ /_/g`

# flyt/omdøb filen
mv $fil $nytnavn

done

Torben

Peter Jensen (29-05-2003)
Kommentar
Fra : Peter Jensen


Dato : 29-05-03 09:52

Topper wrote:

>> Mange af filerne hedder noget i stil med:
>> "Langt Filnavn med mellemrum.txt"
>>
>> Jeg vil så gerne rename alle filerne til noget i stil med:
>> "lang_filnavn_med_mellemrum.txt"
>
> #find gruppen af filer du vil have omdøbt
> filer=`find . -name '*.txt* -print`
>
> #iterér gennem gruppen
> for fil i $filer ; do

Vil der så ikke netop komme problemer med mellemrummene i filnavnene?
Jeg mener at 'for' deler ved alle whitespaces, og ikke kun newline.
<checker lige> ... Jep. På mit system vil det fejle.

> # generer filens nye navn
> nytnavn=`echo $fil | sed s/\ /_/g`
>
> # flyt/omdøb filen
> mv $fil $nytnavn

Hvilket har en lille chance for at overskrive en fil der allerede
findes, eller flytte filen over i et uønsket bibliotek. Jeg ville
anbefale at pakke den ind i en 'if' sætning, som her:

if [ ! -e $nytnavn ]
then
mv $fil $nytnavn
else
echo "Warning! $nytnavn already exists!"
fi

> done

--
PeKaJe

In a great romance, each person basically plays a part that the other
really likes. -- Elizabeth Ashley

Topper (29-05-2003)
Kommentar
Fra : Topper


Dato : 29-05-03 10:55


> Vil der så ikke netop komme problemer med mellemrummene i filnavnene?
> Jeg mener at 'for' deler ved alle whitespaces, og ikke kun newline.
> <checker lige> ... Jep. På mit system vil det fejle.

Du har ret

> Hvilket har en lille chance for at overskrive en fil der allerede
> findes, eller flytte filen over i et uønsket bibliotek. Jeg ville
> anbefale at pakke den ind i en 'if' sætning, som her:

Du har ret igen

Well hvad kan jeg sige til mit forsvar, udover at da jeg skrev mit indlæg
var jeg lige stået op og min hjerne var ikke færdig med at boote :)

Torben




Kent Friis (29-05-2003)
Kommentar
Fra : Kent Friis


Dato : 29-05-03 08:46

Den Thu, 29 May 2003 01:20:46 +0200 skrev Thomas D:
>Hej,
>
>Jeg har et dir med en masse filer som stammer fra en workstation med et
>andet styresystem(et hvor man ska sælge sin sjæl for at bruge det eller
>noget i den retning).
>Mange af filerne hedder noget i stil med:
>"Langt Filnavn med mellemrum.txt"
>
>Jeg vil så gerne rename alle filerne til noget i stil med:
>"lang_filnavn_med_mellemrum.txt"
>
>Altså jeg vil
> - Erstatte upper case begyndelsesbogstaver (eller måske alle store
>bogstaver, har lidt brug for at ku begge dele) med lower case.
> - Erstatte space med underscore.
>
>Er det noget mv og sed s/\ /_/g jeg skal kombinere?

find . -maxdepth 1 | while read file
do
mv $file $(echo $file | tr " [:upper:]" "_[:lower:]");
done

Hvis du vil have subdirectories med, så fjern -maxdepth 1.

Bemærk " " og "_" før upper/lower.

Mvh
Kent
--
"Handlingen blev afbrudt pga. computerens begrænsede effekt"
- Windows NT på en Pentium III 550 MHz

Peter Makholm (29-05-2003)
Kommentar
Fra : Peter Makholm


Dato : 29-05-03 09:09

"Thomas D" <dinadur@hotmail.com> writes:

> Altså jeg vil
> - Erstatte upper case begyndelsesbogstaver (eller måske alle store
> bogstaver, har lidt brug for at ku begge dele) med lower case.
> - Erstatte space med underscore.

Som jeg svarede på sslug.novice så kan det gøres med rename(1) hvis
det er perl-udgaven. Se i manualsiden 'man rename' om den i SYNOPSIS
skriver noget med perlexpr.

--
Peter Makholm | One thing you do is prevent good software from
peter@makholm.net | being written. Who can afford to do professional
http://hacking.dk | work for nothing?
| -- Bill Gates

Thomas D (29-05-2003)
Kommentar
Fra : Thomas D


Dato : 29-05-03 10:29

> Som jeg svarede på sslug.novice så kan det gøres med rename(1) hvis
> det er perl-udgaven. Se i manualsiden 'man rename' om den i SYNOPSIS
> skriver noget med perlexpr.

Tak for svaret.
Dog kan jeg ikke se at der er kommet noget svar på sslug.novice.(?)

Mvh
Thomas



Peter Makholm (29-05-2003)
Kommentar
Fra : Peter Makholm


Dato : 29-05-03 17:03

"Thomas D" <dinadur@hotmail.com> writes:

> Dog kan jeg ikke se at der er kommet noget svar på sslug.novice.(?)

http://www.sslug.dk/emailarkiv/novice/2003_05/msg00377.html.utf8

--
Peter Makholm | One thing you do is prevent good software from
peter@makholm.net | being written. Who can afford to do professional
http://hacking.dk | work for nothing?
| -- Bill Gates

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408941
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste