Vergelijken in directory

Pagina: 1
Acties:

  • berties
  • Registratie: Januari 2000
  • Laatst online: 27-01 14:07
Ik zit met een volgende opbouw in een directory (voorbeeld);

aaa\bestand1.a
aaa\bestand1.b
aaa\bestand2.a
aaa\bestand2.b
bbb\bestand1.a
bbb\bestand2.a
bbb\bestand3.a
bbb\bestand4.a
bbb\bestand4.b
bbb\bestand5.a
bbb\bestand5.b

Nu wil ik alle bestanden verwijderen die extensie .b hebben maar waar geen bijbehordende .a bij zit in dezelfde directory. (in dit voorbeeld dus bbb\bestand1.a bbb\bestand2.a bbb\bestand3.a)

Ik wil hier een scriptje voor schrijven en zat aan de volgende opbouw te denken;
- lijst opbouwen met alle bestanden, met find * -type f > /bestanden.list
- met een while loop de bestanden.list afgaan op zoek naar .a extensies.
- als .a exentie gevonden is, opzoek naar .b exensie in bestanden.list
- als .b extentie daarvan niet gevonden wordt, dan bestand met .a exentie verwijderen.

Voor mijn gevoel worden dit wat loopjes en het ziet er op het eerste oog niet echt effectief uit. Voor mijn gevoel moet het dan ook een stuk eenvoudiger kunnen. Ik weet alleen niet hoe.

Is er een eenvoudigere manier of wordt het gewoon alle regels uitprogrammeren zoals in het lijstje beschreven?

  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025

GX

Nee.

Het kan in één loopje, met for, ls, cut en test. Maar de lol zou er af zijn als ik het voor je zou maken ;)

Wat je ongeveer zou moeten doen is:

• For loopje op 'ls -1 *b'-output (of find natuurlijk, als je dat beter ligt)
• Regel knippen, met cut of sed, zodat je alles overhoudt behalve de extense
• Kijken of <regel>.a bestaat
• Zo nee, verwijderen

Een kind kan de was doen ;)

  • berties
  • Registratie: Januari 2000
  • Laatst online: 27-01 14:07
Bedankt voor de schop in de juiste richting, ik zie nu dat ik met "for i in $( find * ); do" een heel eind kom.
Nu kan ik alles in die ene for loop plaatsen en dat scheelt een hoop.

Weer wat geleerd vandaag.

  • Maasluip
  • Registratie: April 2002
  • Laatst online: 14:05

Maasluip

Frontpage Admin

Kabbelend watertje

Zorg wel dat je je requirements op een rijtje hebt. Je zegt dat je bestand.b wil verwijderen maar in je voorbeeld ga je bestand.a verwijderen.

Signatures zijn voor boomers.


  • berties
  • Registratie: Januari 2000
  • Laatst online: 27-01 14:07
scherp >:)

Was maar een voorbeeld, maar je hebt gelijk.