hallo, ich versuche gerade ein kleines Bash-Programm zu schreiben,um eine Datei (.txt) spaeter zu vergleichen. Aber leider komme ich nicht weiter da meine Bash/perl Kenntnisse sehr wenig sind. Vielleicht kann einer von Euch mir weiter helfen. Ich versuche mein Problem zu skizzieren, da mein Deutsch nicht so gut ist. ich habe verschiedene Dateien (heissen immer snap*.txt) in verschiedene Verzeichnisse, aber die Anzahl dieser Verzeichnisse kann immer verschieden sein: -> /home/carlos/test1/la/snapla1.txt /home/carlos/test1/la1/snapla1.txt /home/carlos/test1/la2/snapla1.txt /home/carlos/test2/la/snapla1.txt /home/carlos/test2/la1/snapla1.txt /home/carlos/test2/la2/snapla1.txt /home/carlos/test2/la3/snapla1.txt [...] ich moechte wissen wieviele "test*" una "la*" Verzeichnisse gibt. ich weiss die Anzahl der Verzeichnisse mit ls -l|head -1|awk '{print $1}'. Ich habe es mit Hilfe eines "loop" versucht da ich den Wert der Verzeichnisse kenne. Aber es funktioniert nicht. Kann mir jemand helfen mit einen guten Tipp? Viele Dank, carlos
suse_list suse wrote:
hallo,
ich versuche gerade ein kleines Bash-Programm zu schreiben,um eine Datei (.txt) spaeter zu vergleichen. Aber leider komme ich nicht weiter da meine Bash/perl Kenntnisse sehr wenig sind. Vielleicht kann einer von Euch mir weiter helfen.
Ich versuche mein Problem zu skizzieren, da mein Deutsch nicht so gut ist.
ich habe verschiedene Dateien (heissen immer snap*.txt) in verschiedene Verzeichnisse, aber die Anzahl dieser Verzeichnisse kann immer verschieden sein:
-> /home/carlos/test1/la/snapla1.txt /home/carlos/test1/la1/snapla1.txt /home/carlos/test1/la2/snapla1.txt
/home/carlos/test2/la/snapla1.txt /home/carlos/test2/la1/snapla1.txt /home/carlos/test2/la2/snapla1.txt /home/carlos/test2/la3/snapla1.txt
[...]
ich moechte wissen wieviele "test*" una "la*" Verzeichnisse gibt.
ich weiss die Anzahl der Verzeichnisse mit ls -l|head -1|awk '{print $1}'. Ich habe es mit Hilfe eines "loop" versucht da ich den Wert der Verzeichnisse kenne. Aber es funktioniert nicht.
Kann mir jemand helfen mit einen guten Tipp?
Viele Dank, carlos
Hi Carlos, probier doch mal ls -l | wc -l -- Manfred Schirmer
suse_list suse wrote:
hallo,
ich versuche gerade ein kleines Bash-Programm zu schreiben,um eine Datei (.txt) spaeter zu vergleichen. Aber leider komme ich nicht weiter da meine Bash/perl Kenntnisse sehr wenig sind. Vielleicht kann einer von Euch mir weiter helfen.
Hallo suse_list (bitte real_name), hier mal ganz kurz zwei beispiele in bash und perl (kanst Du beliebig erweitern) ----> Bash #!/bin/bash home=/home/linuxer zaehler_t=0 zaehler_l=0 cd ${home} echo change to ${home} for i in * do case ${i} in test[0-9]) echo looking in ${home}/${i} ((zaehler_t = zaehler_t + 1)) ;; esac for z in ${i}/* do case ${z} in *la[0-9]) echo matching ${z} ((zaehler_l = zaehler_l + 1)) #alle moeglichen befehle #die Du anwenden moechtest ;; esac done done echo -e "Es sind << ${zaehler_t} >> test- und << ${zaehler_l} >>\ la-directories\n" ----> Perl #!/usr/bin/perl $home="/home/linuxer"; $zaehler_t="0"; $zaehler_l="0"; opendir(FIRST_DIR, "$home") or die "Can't open $home"; while( defined ($first_dirname = readdir(FIRST_DIR)) ) { if ($first_dirname =~ /test[0-9]/) { $zaehler_t = $zaehler_t + 1; print "looking in $first_dirname\n"; opendir(SECOND_DIR, "$home/$first_dirname") or die "Can't open $home/$first_dirname"; while( defined ($second_dirname = readdir(SECOND_DIR)) ) { if ($second_dirname =~ /la[0-9]/) { $zaehler_l = $zaehler_l + 1; print "matching $second_dirname\n"; #alle moeglichen befehle #die Du anwenden moechtest } } closedir(SECOND_DIR); } } closedir(FIRST_DIR); print "Es sind << $zaehler_t >> test- und << $zaehler_l >> \ la-directories\n"; wenn Du dazu noch fragen hast kannst Dich gerne bei mir melden :-) Aber einen Kurs in bash/perl programming darfst nicht erwarten ;-) regards, Martin -- Martin Schmiderer Walbenstr. 12 72127 Wankheim
participants (3)
-
M. Schmiderer
-
Manfred Schirmer
-
suse_list suse