Nieuws:

Ubuntu-NL weer online!

Na een periode van technische problemen en een overbelaste server zijn we eindelijk weer bereikbaar.
Samen met Hobbynet, onze sponsor en hostingpartner, hebben we een oplossing gevonden zodat alles weer soepel draait.

Bedankt voor jullie geduld en begrip. We hopen nu weer verder te gaan waar we gebleven waren.

Het team van Ubuntu-NL

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Vraag over ls en rm commandos  (gelezen 1335 keer)

Offline Wim Moons

  • Lid
Vraag over ls en rm commandos
« Gepost op: 2011/01/06, 20:50:08 »
Hallo forumleden,

Misschien een domme vraag, maar toch.
Hoe kan ik met ls en rm commandos files, met wildcards in de naam, laten zien en eventueel verwijderen in subdirectories? Ik heb een hoofddirectory met daaronder een groot aantal subdirectories en als ik in de hoofddirectory "ls -R *.txt" do krijg ik zoiets als file not found. Als ik dit in een subdir do werkt het wel.

bij voorbaat dank voor enig licht in deze duisternis, groeten, Wim

Offline ivo

  • Lid
Re: Vraag over ls en rm commandos
« Reactie #1 Gepost op: 2011/01/06, 21:51:44 »
bijvooorbeeld:

ls -R | grep -i txt

of

find . -name "*.txt"

Deze wordt al lastiger (verwijdert alle .txt bestanden vanuit de directory waar je dit intikt en alles wat eronder staat)

find . -name "*.txt" -exec rm {} \;

Zoek op google maar eens naar
bash manual
There are only 10 types of people in the world; those who understand binary and those who don't.

Offline vanadium

  • Lid
Re: Vraag over ls en rm commandos
« Reactie #2 Gepost op: 2011/01/06, 21:55:48 »
...Ivo was me voor...

Het lijkt me dat ls -R alles oplijst, en als iets wat hij oplijst, een dir is, wordt ook daarvan de inhoud gegeven.

Om te doen wat jij wil heb je find nodig:
find . -name '*.txt'
Dit betekent: "zoek in de huidige directory (symbool: .) bestanden met extensie txt."

En je kan wat je vindt ook verwijderen (opletten!!!)
find . -name '*.txt' -exec rm "{}" \;

Re: Vraag over ls en rm commandos
« Reactie #3 Gepost op: 2011/01/06, 22:19:49 »
Wim,

Met man ls of man rm heb je meer info over het commamdo
Dus eigenlijk man <commando>

Als ik we niet vergist werkt de -R optie niet met een wildcard
De uitkomst van ls -R *.txt of ls *.txt in sje subdir zal het zelfde zijn

Dus, zal je anders moeten doen...:
ls -R | grep .txt$ | less

Den uitleg...
ls -R = bekend
| = het pipe-teken. Betekent dat je de uitkomst door sluist naar een andere commando
grep .txt$ = alleen laten zien dat eindig op .txt De $aan het zorg ervoor dat alleen -.txt ziet, en niet .txt- en -.txt-
less = vind ik mooier dan more. Hierin kan je nog een stap terug gaan. Met more is het alleen naar 'beneden' gaan.

MvG,
MauRice
Registered Linux user: 473556

Offline heir4c

  • Lid
Re: Vraag over ls en rm commandos
« Reactie #4 Gepost op: 2011/01/06, 22:48:08 »
MauRice, met dat commando krijg je niet de .txt bestanden die in de verborgen directory's staan. Dus met de commando van de anderen krijg je meer output.

Ik had trouwens nog een ander commando. (Dus je kan het op verschillende manieren doen.)
find *.txt . | grep '.txt'$Met sudo  ervoor kan je alle .txt bestanden bijvoorbeeld uit de / (root partitie) halen.
en met het toevoegen van | tee kan je de hele output bewaren in een backup bestand.
find *.txt . | grep '.txt'$ | tee txt.backup
Het punt dat na find *.txt staat kan je vervangen door bijv. /home/gebruikersnaam of / of welke directory ook.
De $ na .txt staat er om aan te geven dat het aan het einde van de bestandsnaam moet staan. Anders krijg je ook andere txt overeenkomsten en ook extentie zoals .mtxt (of iets in die aard ben ik toch tegengekomen).
« Laatst bewerkt op: 2011/01/06, 22:50:24 door heir4c »
Tip: https://makkelijkelinuxtips.blogspot.com/p/1.html en http://wiki.ubuntu-nl.org/   Upload-site:http://imgur.com/
be Open be Free be Ubuntu

Offline Wim Moons

  • Lid
Re: Vraag over ls en rm commandos
« Reactie #5 Gepost op: 2011/01/07, 10:38:58 »
Bedankt voor alle antwoorden. Ik ga er mee experimenteren. Blijft bij mij de vraag hangen waarom ls *.txt voor de files in een directory wel werkt en ls -R *.txt niet voor de files in subdirectories. Of is dit te filosofisch? :|

Groeten, Wim

Offline ivo

  • Lid
Re: Vraag over ls en rm commandos
« Reactie #6 Gepost op: 2011/01/07, 13:46:09 »
Bedankt voor alle antwoorden. Ik ga er mee experimenteren. Blijft bij mij de vraag hangen waarom ls *.txt voor de files in een directory wel werkt en ls -R *.txt niet voor de files in subdirectories. Of is dit te filosofisch? :|

Groeten, Wim


Dat is te filosofisch. Zo is het niet ontworpen en het zal ook niet (binnen het ls commando) worden aangepast.

Omdat een shell (bash, ksh, sh, zsh, ..., ..., ...) zoveel krachtige commando's al in zich hebben en deze nog met allerlei UNIX tools (sed, awk, noem maar op) kunnen samenwerken kun je slimme scripts bouwen die vanalles kunnen. Dat dit vaak lastig kan zijn, mee eens.

Verdiep je hier ook maar eens in
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html

En als je daarmee klaar bent
http://tldp.org/LDP/abs/html/


There are only 10 types of people in the world; those who understand binary and those who don't.

Offline vanadium

  • Lid
Re: Vraag over ls en rm commandos
« Reactie #7 Gepost op: 2011/01/07, 15:40:56 »
"ls" geeft informatie over de bestanden die je aan de commandolijn meegeeft. Voor directories is de informatie de inhoud van de directory, voor een bestand is de informatie enkel de naam van het bestand (met de -l optie krijg je meer info).

ls *.txt betekent: geef mij alle info over dirs/bestanden die voldoen aan *.txt. Je krijgt namen van text bestanden te zien als die er zijn.

-R betekent "recursief". Ook de inhoud van directories in directories wordt opgelijst.

ls -R *.txt levert je geen extra informatie op:  de items waarover je namelijk info wil, zijn allemaal text bestanden. Er zijn geen directories bij, dus -R, recursief, is niet van toepassing.