Nieuws:

We zijn er weer.

Na lange tijd van afwezigheid zijn we er weer  :laugh:
We hebben alle wachtwoorden gereset, je oude wachtwoord werkt niet meer.Je moet via het "wachtwoord vergeten"-linkje je wachtwoord resetten. Je krijgt hiervoor een mailtje op het adres dat je bij ons geregistreerd hebt.

De komende tijd zijn we nog druk bezig om de rest van de site op te bouwen, dus het kan zijn dat sommige onderdelen (tijdelijk) niet werken.

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

Auteur Topic: [ OPGELOST] delen van strings vergelijken  (gelezen 1011 keer)

Offline thailand

  • Lid
  • Steunpunt: Nee
[ OPGELOST] delen van strings vergelijken
« Gepost op: 2011/08/18, 08:51:06 »
hallo
Ik ben een beginnende programmeur.
Ik vind voorlopig geen oplossing voor wat ik wil doen.In een map zitten een hoop bestanden die eindigen op ofwel .txt of op.pdf.
Ik wil via een script kijken of er bestanden gelijk zijn maar zonder de extentie.
fdp="weerwolf.pdf"
text="weerwolf.txt"
pdf="${fdp%%.pdf}"
txt="${text%%.txt}"
 if [ "$pdf" = "$txt" ]
 then
   echo "$pdf is gelijk aan $txt"
 fi
exit 0
dit hierboven werkt maar hoe moet ik een ganse map gaan controleren zonder dat ik bestandsnammen moet ingeven?
« Laatst bewerkt op: 2011/09/06, 09:02:57 door thailand »

Offline erik1984

  • Lid
    • erik1984
  • Steunpunt: Nee
Re: delen van strings vergelijken
« Reactie #1 Gepost op: 2011/08/18, 09:52:36 »
Dat kun je doen met een "for"-lus

map=/path/to/*
for f in $map
do
 doe iets met $f
done

Offline Lekensteyn

  • Lid
  • Steunpunt: Nee
Re: delen van strings vergelijken
« Reactie #2 Gepost op: 2011/08/29, 00:47:39 »
Je zou door een van de twee bestandstypen kunnen lopen en dan controleren of het andere bestandstype bestaat:

for file in *.txt; do
    if [ -f "${file%.txt}.pdf" ]; then
        echo "$file heeft ook een bestand met een pdf extensie"
    fi
done
- De eerste regel loopt door alle bestanden die een .txt extensie hebben en plaatst elke keer de bestandsnaam in een variable die "$file" heet.
- ${file%.txt} haalt de .txt extensie van de $file af, "weerwolf.txt" wordt dan "weerwolf". Daarna wordt er ".pdf" erachter geplakt zodat er "weerwolf.pdf" uit "${file$.txt}.pdf" komt.
- [ -f "..." ] controleert of het bestand "..." bestaat (zonder aanhalingstekens). In dit geval "weerwolf.pdf" (zie vorige voorbeeld)

Als je wilt controleren of bestanden identiek zijn qua inhoud, gebruik dan iets als md5sum. Je kunt meerdere bestanden doorgeven en dan `sort` of `uniq` gebruiken om het resultaat te sorteren en dubbele bestanden eruit te filteren.

Offline thailand

  • Lid
  • Steunpunt: Nee
Re: delen van strings vergelijken
« Reactie #3 Gepost op: 2011/09/06, 08:58:25 »
Ik weet dat het een beetje laat is maar ik had al die tijd geen internetverbinding. Ik woon in Thailand en dit is allemaal mogelijk.
Ik heb dit geprobeerd en dit werkt.
Dus hartelijk dank voor uw antwoord.