d1ck3n
Goto Top

Cyrus Anzahl der E-Mails ermitteln

Hallo zusammen,

ich habe auf meinem Cyrus Sever ein Verzeichnis wo alle user und public Verzeichnisse mit entsprechenden Mail Dateien (z.B. 2568.) gesammelt sind.

Nun möchte ich jedes Verzeichnis in der Shell ausgeben und dazu nur die Dateien gezählt haben die auf einen Punkt enden.

Leider habe ich es nur geschafft alle Dateien in einem Verzeichnis zu zählen.

Aber mit
 &&  echo "$d dirctory has $(find $d -type f -name "*." | wc -l) files" || :  
kam ich nicht weit.

Das ist mein Skript bisher:

#!/bin/bash
# Write a script that will count the number of files in each of your subdirectories.


START=/var/spool/cyrus/mail

# change your directory to command line if passed
# otherwise use home directory
[ $# -eq 1 ] && START=$1 || :

if [ ! -d $START ]
then
        echo "$START not a directory!"  
        exit 1
fi

# use find command to get all subdirs name in DIRS variable
DIRS=$(find "$START" -type d)  

# loop thought each dir to get the number of files in each of subdir
for d in $DIRS
do
   [ "$d" != "." -a "$d" != ".." ] &&  echo "$d dirctory has $(ls -l $d | wc -l) files" || :  
done

Ich stehe bestimmt voll auf dem Schlauch, aber hat von euch vielleicht jemand eine Idee?

Update: Das Skript hat leider Probleme mit Leerzeichen in den Namen. Kennt vielleicht jemand ein Tool oder eine Methode sich alle Mail Verzeichnisse anzeigen und den Inhalt Zählen zu lassen?

Grüße
D1Ck3n

Content-ID: 366085

Url: https://administrator.de/contentid/366085

Ausgedruckt am: 22.11.2024 um 18:11 Uhr

D1Ck3n
D1Ck3n 27.02.2018 um 00:21:28 Uhr
Goto Top
Ich bin schon mal weiter gekommen:

#!/bin/sh

DIR=$(tree -dfi | head -n -1)

for i in $DIR;
do
  echo $(find $i -type f -name "*." | wc -l) "          " $i  
done

Das Skript gibt mir die Verzeichnisse ideal aus, aber nur, wenn kein Leerzeichen in der Variablen DIR vor kommt. Leider klappt das maskieren nicht. Was kann man da machen?
D1Ck3n
D1Ck3n 28.02.2018 um 16:48:50 Uhr
Goto Top