2010-12-02 2 views
1

écrire un script shell qui calcule les informations suivantes pour le contenu d'un répertoire donné. Le répertoire doit être spécifié en tant qu'argument de ligne de commande unique pour votre script. Vous n'avez pas besoin de rendre compte du contenu des sous-répertoires imbriqués - juste le contenu direct du répertoire spécifié.Script de base Shell avec des structures de contrôle. Compter le nombre de répertoires et de fichiers et s'ils sont lisibles en écriture et exécutables

Le nombre total de répertoires qui se trouvent dans le répertoire donné (notez qu'il s'agit de sous-répertoires). Le nombre total de fichiers dans le répertoire donné. Le nombre d'éléments (fichiers/répertoires) dans le répertoire courant qui sont lisibles. Le nombre d'éléments (fichiers/répertoires) dans le répertoire courant qui sont accessibles en écriture. Le nombre d'éléments (fichiers/répertoires) dans le répertoire courant qui sont exécutables.

J'ai essayé:

si [-d fichier $] puis compteur = expr $counter + 1 echo "Nombre de répertoires:" $ counter fi

+3

Comme il est une question de devoirs, vous devez vous aider en premier. - - Qu'est-ce que vous avez essayé jusqu'ici? Qu'est-ce que vous ne comprenez pas? Où est votre script tombant? Citant la question mot à mot ne vous mènera généralement nulle part –

+0

je sais si je le fais, si [- d $ fichier] il sera voir si le répertoire courant est un répertoire je ne comprends pas comment regarder à l'intérieur d'un répertoire et compter ses fichiers et répertoires –

+0

@Chris J, heureux de voir une réponse plus raisonnable que le * BAHHH son travail ne l'aide pas! voir souvent sur SO –

Répondre

1

Je ne vais pas écrire le script pour vous, mais une façon d'obtenir la réponse est d'utiliser ls -l une association avec grep -c, en utilisant grep pour analyser les drapeaux de système de fichiers appropriés (la colonne drwxrwxrwx) que ls -l vous donnera. La clé est de savoir comment analyser cette colonne avec grep.

Il ne peut être le plus efficace (comme nous le faisons ls plusieurs fois, mais il vous donnera ce que vous cherchez

Questions connexes