View previous topic :: View next topic |
Author |
Message |
xraver Veteran
Joined: 20 Aug 2003 Posts: 1083 Location: Halberstadt
|
Posted: Sun Aug 24, 2003 6:50 pm Post subject: dateien zählen |
|
|
Hallo,
ich suche nach einer Möglichkeit (script,befehl) wie man Datein in einen Verzeichnis zählen kann.
thx |
|
Back to top |
|
|
HeadbangingMan Apprentice
Joined: 24 Mar 2003 Posts: 265 Location: Heimbach-Weis / Germany
|
Posted: Sun Aug 24, 2003 7:08 pm Post subject: |
|
|
Ich denke, "du" kann, was Du willst. Guckst Du
Wenn Du KDE benutzt guckst Du
--
Gruß Conny Ingo |
|
Back to top |
|
|
tl2000 n00b
Joined: 29 Jun 2003 Posts: 23
|
Posted: Sun Aug 24, 2003 7:10 pm Post subject: |
|
|
das geht auch:
Code: | ls -l verzeichnisname | wc -w |
oder so
Code: | find . -type f -maxdepth 1 | wc -l |
|
|
Back to top |
|
|
xraver Veteran
Joined: 20 Aug 2003 Posts: 1083 Location: Halberstadt
|
Posted: Mon Aug 25, 2003 7:28 am Post subject: |
|
|
Danke, das hier funktoniert.
Code: | find . -type f -maxdepth 1 | wc -l |
Kann man das noch in ein Script packen?
Es soll folgendes machen.
- wenn keine datei vorhanden ist dann gar nix ausgeben
- ansonsten die datein in verzeinis zählen und folgendes ausgeben "xx Datein vorhanden".
Für jeden Codeschnipsel wäre ich dankbar. |
|
Back to top |
|
|
LockeAverame Tux's lil' helper
Joined: 14 Jul 2003 Posts: 108
|
Posted: Mon Aug 25, 2003 7:47 am Post subject: |
|
|
Code: |
#!/bin/sh
let counter=0
for f in $(ls $1)
do
let counter=$counter+1
done
if [ $counter != 0 ]
then
echo "$counter Dateien vorhanden"
fi
|
mit script <verzeichnis>, zählt er dir die dateien und verzeichnisse in <verzeichnis>. es ignoriert allerdings hidden files mit . am anfang.
bei extra wünschen tune ich es noch etwas.
hope it helps |
|
Back to top |
|
|
xraver Veteran
Joined: 20 Aug 2003 Posts: 1083 Location: Halberstadt
|
Posted: Mon Aug 25, 2003 9:35 am Post subject: |
|
|
thx, das Script läuft super.
Ich will damit den incoming Order von mldonkey überwachen.
per cronjob wird das script ausgeführt - die ausgabe geht dann in /dev/speech
Sinnvoll wäre hier vileicht noch das Ordner nicht mit gezählt werden oder man die ausgabe nach Dateityp erweitern kann. (z.b. *.mp3 -> x neue audio daten da)
Mal schauen.... |
|
Back to top |
|
|
LockeAverame Tux's lil' helper
Joined: 14 Jul 2003 Posts: 108
|
Posted: Wed Aug 27, 2003 8:36 am Post subject: |
|
|
einfach das $(ls $1) erweitern wie du es möchtest es bestimmt was angezeigt werden soll.
zB:
ls $1 | grep '.*.mp3'
bei einigen dingen ist es sinnvoll IFS zu setzen
ok viel spass damit |
|
Back to top |
|
|
xraver Veteran
Joined: 20 Aug 2003 Posts: 1083 Location: Halberstadt
|
Posted: Wed Aug 27, 2003 12:31 pm Post subject: |
|
|
Habe mir das Buch "Shell Programmierung in UNIX" geholt um mich mehr mit der Shell auseinander zu setzen. Wer gleich mal nachschlagen .
thx
aja....es nervt wenn immer wieder die Dateien mitgezählt werden die schon gezählt wurde. Das ich das Script alle 10min aufrufe dachte ich mir das man die dateien nach "zeitstempel" sortieren kann. Also ne Datei die älter als 10min ist wird nicht gezählt. Mal schauen..... |
|
Back to top |
|
|
mec Tux's lil' helper
Joined: 22 Apr 2003 Posts: 147 Location: Munich
|
Posted: Wed Aug 27, 2003 7:53 pm Post subject: |
|
|
hi,
probier mal awk und cut aus i.v.b mit einem grep
so zb.
ls -la | grep `^d` gibt nur directory aus
dies im negative kommst du zu nicht-DIRs.
wenn die dateien doppelt gezählt werden, kannst du das gelesene ergebnis in ein file schreiben lassen. dann vorher prüfen ob eintrag schon im file steht.
cu
mec _________________ IBM T43 Centrino 2GHz - Shuttle-X P4
-------------------------------------------
LinuxUser #321097
------------------------------------------- |
|
Back to top |
|
|
xraver Veteran
Joined: 20 Aug 2003 Posts: 1083 Location: Halberstadt
|
Posted: Thu Aug 28, 2003 8:04 am Post subject: |
|
|
mec wrote: |
wenn die dateien doppelt gezählt werden, kannst du das gelesene ergebnis in ein file schreiben lassen. dann vorher prüfen ob eintrag schon im file steht.
|
Hallo,
das hatte ich mir auch schon überlegt. Aber ich würde das lieber mit dem Zeitstempel machen. Scheint mir eleganter . |
|
Back to top |
|
|
hook Veteran
Joined: 23 Oct 2002 Posts: 1398 Location: Ljubljana, Slovenia
|
Posted: Thu Aug 28, 2003 8:56 am Post subject: |
|
|
du ...nein wirchlich, Du brauchst keine script wenn Du schon eine command dafuer hast (du naemlich) ...o, scheisse, dass klingt richtig schlecht
_________________ tea+free software+law=hook
(deep inside i'm still a tux's little helper) |
|
Back to top |
|
|
LockeAverame Tux's lil' helper
Joined: 14 Jul 2003 Posts: 108
|
Posted: Thu Aug 28, 2003 9:36 am Post subject: |
|
|
so weit ich weiss, zählt du nur die dateigrössen zusammen nicht aber deren anzahl (was auch in der manpage steht).
imho is du da vollkommen nutzlos. |
|
Back to top |
|
|
xraver Veteran
Joined: 20 Aug 2003 Posts: 1083 Location: Halberstadt
|
Posted: Thu Aug 28, 2003 12:13 pm Post subject: |
|
|
Ich halte du auch nicht für besonders sinnvoll.
Ich dachte mir das das Script so arbeitet;
Code: |
- zähle alle daten die neuer als 10min alt sind zusammen
- sortiere dateien nach dateityp
- gebe die Anzahl der neuen Datein aus
|
Das Endergebnis (welches dann an /dev/speech geht) könnte dann so aussehen:
"10 neue mp3 Dateien vorhanden"
10-20min später
"4 neue ebooks vorhanden" |
|
Back to top |
|
|
xraver Veteran
Joined: 20 Aug 2003 Posts: 1083 Location: Halberstadt
|
Posted: Thu Aug 28, 2003 12:19 pm Post subject: |
|
|
LockeAverame wrote: | so weit ich weiss, zählt du nur die dateigrössen zusammen nicht aber deren anzahl (was auch in der manpage steht).
imho is du da vollkommen nutzlos. |
hrhr.....
Man könnte ja mit du nachsehen ob sich was im Verzeichnis getan hatt.
So nach dem Motto;
Code: |
- wenn die datei/Verzeichnis eine bestimmte Grösse überschreitet dann;
- zähle sie
|
....womit wir wieder beim alten prob wären. Daten zählen, Dateityp und Datum bestimmen und Ausgabe machen.
Also nix mit du und RTFM |
|
Back to top |
|
|
xraver Veteran
Joined: 20 Aug 2003 Posts: 1083 Location: Halberstadt
|
Posted: Thu Aug 28, 2003 3:21 pm Post subject: |
|
|
ok, habe mir jetzt nen kleines Script gebaut.
Da es mein erste Script ist (auch wenns nur ein par Zeilen sind) würde mich interessieren was ihr von der Lösung haltet.
Thx.
Code: |
#!/bin/sh
# Variablen
# Verzeichnis von ml_donkey
MLDIR=/home/icetower/.mldonkey/incoming/
# Alter der Datein min
MLTIME=10
# Sprachausgabe ( Geraete-Datei verwenden! Ausgabe scheibt in $SPEAK )
SPEAK=/dev/speech
# Ueberpruefen ob neue Datein da sind und wert in >> $MLCOUNT
MLCOUNT=`find $MLDIR -type f -mmin -$MLTIME | wc -l`
# Check ob $MLCOUNT ungleich 0 ist und Wert an Sprachausgabe
if test $MLCOUNT != 0
then
if test $MLCOUNT = 1
then
echo "$USER der Esel war da. Nur eine neue Datei vorhanden." > $SPEAK
else
echo "$USER der Esel war da. $MLCOUNT neue Dateien vorhanden." > $SPEAK
fi
fi
|
|
|
Back to top |
|
|
mec Tux's lil' helper
Joined: 22 Apr 2003 Posts: 147 Location: Munich
|
Posted: Thu Aug 28, 2003 3:22 pm Post subject: |
|
|
Quote: | so weit ich weiss, zählt du nur die dateigrössen zusammen nicht aber deren anzahl (was auch in der manpage steht). |
der du gibt dir mit der option -c das counting aus. also das zählen der dateien, aber vorsicht es werden auch dirs und qualifier mitgezählt.
warum machst DU (nicht du) es nicht mit dem shellscript? hier nochmal etwas modifiziert....
Code: |
#!/bin/sh
# gibt nur dateien aus die mit - anfagen
files='ls -la | grep "^-"'
# counter initialisieren
counter=0
for i in $(file?); do
counter=$counter+1
done
if [ $counter != 0 ]
then
echo "$counter Dateien vorhanden"
fi
exit 0 |
habe es zwar nicht getestet sollte aber funzen.
damit eine datei nicht zweimal gelesen wird lege tempfile an lese es ein und frage mit dem test (man test) ab.
hoffe das war es mit deiner frage...
cu
mec _________________ IBM T43 Centrino 2GHz - Shuttle-X P4
-------------------------------------------
LinuxUser #321097
------------------------------------------- |
|
Back to top |
|
|
LockeAverame Tux's lil' helper
Joined: 14 Jul 2003 Posts: 108
|
Posted: Fri Aug 29, 2003 9:36 am Post subject: |
|
|
du hast let vergessen so wird er counter als string verarbeiten dann haste nen hübsches 0+1+1+1+1... und so da stehen
und er zählt nur im aktuellen verzeichnis nicht gerade doll.
naja bin momentan zu faul da nen script zu erstellen, dass die anforderungen erfüllt, hab noch anderes zu tun aber du könntest für jeden dateityp einen eigenen counter einführen und per find nur files mit mtime<10min zählen, das würde es tun. |
|
Back to top |
|
|
mec Tux's lil' helper
Joined: 22 Apr 2003 Posts: 147 Location: Munich
|
Posted: Sat Aug 30, 2003 1:05 pm Post subject: |
|
|
dann füll hat die variable file Recrusive ab xy verzeichniss _________________ IBM T43 Centrino 2GHz - Shuttle-X P4
-------------------------------------------
LinuxUser #321097
------------------------------------------- |
|
Back to top |
|
|
|