Toon posts:

converteren Hoofdletters / kleine letters met linux

Pagina: 1
Acties:
  • 318 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hallo iedereen,

Van een gehele directory-tree (dus directories inclusief onderliggende bestanden) willen we aanwezige hoofdletters omzetten naar kleine letters.

Handmatig wijzigen is echt onbegonnen werk. Weet iemand hoe ik dit het beste met Linux kan aanpakken?

  • El Martino
  • Registratie: December 2000
  • Laatst online: 12-11 10:35

El Martino

Zo niet, dan toch.

Perl is uitermate geschikt voor zoiets. Daar heb je nog geen 5 regels code voor nodig.

"To make a bad day worse, spend it wishing for the impossible", Calvin (Calvin & Hobbes)


  • Tomaat
  • Registratie: November 2001
  • Laatst online: 24-08 21:15
daar heb je toch 'dos2unix' voor?

  • u_nix_we_all
  • Registratie: Augustus 2002
  • Niet online
dos2unix is om dos bestanden om te zetten , die hebben andere tekens voor regeleinde.

a.koster wil bedoelt "conv", met de 'toupper" of "tolower" parameter.. ofzo,
heb geen linuxje hier , man conv dus :)

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


  • Tomaat
  • Registratie: November 2001
  • Laatst online: 24-08 21:15
euhm, volgens mij zat er bij wine een tooltje dat hoofdletters naar kleine letters omzet...

  • odysseus
  • Registratie: Augustus 2000
  • Laatst online: 14:48

odysseus

Debian GNU/Linux Sid

Als het om de bestandsnamen gaat:
code:
1
2
3
4
5
6
7
#!/usr/bin/perl

for $i (`find .`)
{
  $j = lc $i;
  `mv $i $j`;
}

Als het om de inhoud van bestanden gaat dan kun je ook iets dergelijks doen, maar dan zul je wat efficienter moeten programmeren. Bovenstaande lukt nog wel voor een paar duizend bestanden, maar je wilt niet teken voor teken gaan kijken of iets lowercase moet worden in duizenden bestanden...

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


Verwijderd

Het example van Odysseus is prachtig kort en krachtig (Perl rulez). Voor de volledigheid heb ik even een bash script hier wat het ook kan middels 'tr'. Dit scriptje gebruik ik zelf altijd. Let op het werkt alleen voor bestandnamen en werkt niet IN files. Dat kan wel maar dan zul je zelf even verder moeten sleutelen.

#! /bin/bash
#
# Changes every filename in working directory to all lowercase.
#
# Inspired by a script of john dubois,
# which was translated into into bash by Chet Ramey,
# and considerably simplified by Mendel Cooper,
# author of this HOWTO.

if [ "foo$1" != "foo" ]; then
cd $1
for filename in * #Traverse all files in directory.
do
fname=`basename $filename`
n=`echo $fname | tr A-Z a-z` #Change name to lowercase.
if [ $fname != $n ] # Rename only files not already lowercase.
then
mv $fname $n
fi
done
else
echo "Syntax: files_to_lowercase directory"
echo "."
fi
exit 0

-edit 3e keer: waarom komen er extra spaties tussen de code als je deze in de '['code']' tag zet ? Dat de code inspringt is mooi maar al die extra spaces maken het weer lastiger leesbaar imo.

[ Voor 0% gewijzigd door Verwijderd op 10-10-2002 18:12 . Reden: code tags toegevoegd en weer verwijderd. ]


  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 12:54

deadinspace

The what goes where now?

Je kunt ook het progje "rename" installeren (zit hier bij de package "perl", omdat het een perl-scriptje is), daarmee kun je heel makkelijk en snel veel files renamen (dmv een regexp).
Niet dat dit ook maar iets kan dat je met perl -e niet kunt, maar rename is wel makkelijk en kort om vanuit een shell te gebruiken.
Pagina: 1