http://www.bsdfreaks.nl Home site: http://rob.lensen.nu /me was RobL
uit de losse pols (perfecte werking niet gegarandeerd):Op zaterdag 24 februari 2001 11:49 schreef rlensen het volgende:
Had ff een kleine vraag.
ik heb een hele rits bestanden met als naam:
pproxyrc5pproxyrc5k*.log
* = de datum
Deze moeten allemaal veranderand worden naar:
pproxyrc5*.log
* = nog steeds de datum
Hoe doe ik dit? Hbe het al een keer fout gedaan, zoals je ziet aan de bestandsnaam.
--ff aangepast. veranderde naar de verkeerde naam
for i in $(ls *.log)
do
a=$(echo $i | sed 's/pproxyrc5k//')
mv $i $a
done
Dit is tcoh gewoon c-code?
Ben zelf nog maar beginnend c-programeur, dus zou je het ff een beetje willen toelichten?
Kan ik het volgende keer zelf.
Ben zelf nog maar beginnend c-programeur, dus zou je het ff een beetje willen toelichten?
Kan ik het volgende keer zelf.
http://www.bsdfreaks.nl Home site: http://rob.lensen.nu /me was RobL
Nee hoor. Is gewoon shell-code.
Euh toelichting... es denken. het "mv" commando laat alleen voor het eerste argument file expansion toe (dus iets met een * erin zeg maar). Om dus zowel meerdere filenamen als source en destination op te kunnen geven moet je de functionaliteit van "mv" nabouwen. de "for i in $(ls *.log)" regel leest 1 voor 1 alle bestanden die op ".log" eindigen in in de variabele "i". Met "sed" haal ik daar vervolgens het overbodige stuk af en pleur dat in de variabele "a". Tenslotte voer ik die twee argumenten aan het eigenlijke "mv" commando. De lus wordt dus doorlopen voor elke file die op ".log" eindigt, en daarmee is het probleem van meerdere files als destination voor "mv" omzeild
Euh toelichting... es denken. het "mv" commando laat alleen voor het eerste argument file expansion toe (dus iets met een * erin zeg maar). Om dus zowel meerdere filenamen als source en destination op te kunnen geven moet je de functionaliteit van "mv" nabouwen. de "for i in $(ls *.log)" regel leest 1 voor 1 alle bestanden die op ".log" eindigen in in de variabele "i". Met "sed" haal ik daar vervolgens het overbodige stuk af en pleur dat in de variabele "a". Tenslotte voer ik die twee argumenten aan het eigenlijke "mv" commando. De lus wordt dus doorlopen voor elke file die op ".log" eindigt, en daarmee is het probleem van meerdere files als destination voor "mv" omzeild
nog een klein prob
Er staan nog een aantal *.log.log files
Hoe haal ik een log weg (dus een extensie)
Ik d8 dit
for i in $(ls *.log.log)
do a=$(echo $i | sed 's/*.log.log//')
mv $i $a
done
maar werkt niet
Er staan nog een aantal *.log.log files
Hoe haal ik een log weg (dus een extensie)
Ik d8 dit
for i in $(ls *.log.log)
do a=$(echo $i | sed 's/*.log.log//')
mv $i $a
done
maar werkt niet
http://www.bsdfreaks.nl Home site: http://rob.lensen.nu /me was RobL
Dat komt o.a. omdat een "." in een reguliere expressie een speciale betekenis heeft (any character). Verder is de syntax van s(ubstitute) als volgt: s/vervang-regexp/door-dit/[modifier]. Het wordt dan dus sed 's/\(log\)\.log/\1/'Op zaterdag 24 februari 2001 15:19 schreef rlensen het volgende:
nog een klein prob
Er staan nog een aantal *.log.log files
Hoe haal ik een log weg (dus een extensie)
Ik d8 dit
for i in $(ls *.log.log)
do a=$(echo $i | sed 's/*.log.log//')
mv $i $a
done
maar werkt niet
Pagina: 1