2010-12-02 27 views
1

Quelle est la meilleure façon de rechercher dans un répertoire et de déterminer si son contenu est constitué de répertoires ou de fichiers. C'est une question de devoirs.Mise en boucle du contenu du répertoire en cours

mes devoirs me demande d'écrire un script qui compte le nombre de répertoires, fichiers, combien sont exécutables, inscriptible et lisible.

+2

Vous devrez effectuer une partie du travail vous-même. –

+0

Cette question sera utile pour vous: http://stackoverflow.com/questions/3962155/logical-error-in-shell-script-please-help-unix –

+0

S'il vous plaît ne pas double message: http: // stackoverflow. com/questions/4340974/basic-shell-scripting-avec-control-structures-counting-the-number-of-directories –

Répondre

0

Utilisez les opérateurs de style -X:

[ -d "${item}" ] && echo "${item} is a directory" 

Voir la voir la liste complète page man bash (recherche "EXPRESSIONSCONDITIONNELLES").

Looping par le contenu d'un répertoire et le comptage ressemble à ceci:

dirs=0 
writeable=0 
for item in /path/to/directory/*; do 

    [ -d "${item}" ] && dirs=$((dirs + 1)) # works in bash 
    [ -w "${item}" ] && writeable=`expr ${writeable} + 1` # works in bourne shell 

    # Other tests 

done 

echo "Found ${dirs} sub-directories" 
echo "Found ${writeable} writeable files" 
+0

va é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é. - –

+0

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é le code pour l'élément dans le fichier $ faites si [-d $ fichier] puis contre = expr $ compteur + 1 écho "Nombre de répertoires:" $ compteur fait –

+1

@Andrew K: J'ai mis à jour pour montrer comment ajouter en bash et bourne shell. Mais vraiment, si c'est une tâche d'école, vous devriez le savoir vous-même. Si vous allez faire plus de tâches de script shell, je vous suggère de lire toute la page de manuel bash et d'expérimenter avec ce que vous apprenez. C'est une lecture difficile et cela prendra quelques heures mais sera payant à la fin (pas seulement à l'école mais avec les outils puissants que vous apprendrez). Ou lisez ceci: http://www.linuxconfig.org/Bash_scripting_Tutorial – kanaka

1

En supposant que vous parlez de la famille bourne shell, jetez un oeil à la -d, -x, -w ... et je m devinant -r tests. Chercher comment une boucle fonctionne en bash pour voir comment parcourir les fichiers ... l'idée générale est

for var in directory/*; do 
    #stuff with $var 
done 

Mais il y a quelques indications concernant les espaces dans les noms de fichiers qui peuvent faire ce plus délicat.

+1

Dans cette tâche, vous allez é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é. –

+1

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é le code de l'article dans le fichier $ faire si [-d fichier $] puis compteur = 'expr $ contre + 1' fi echo "Nombre de répertoires:" $ counter fait –

+0

@ Andrew K : Vous avez la bonne idée dans votre extrait de code, vérifiez vos lignes 'for' et 'if'. Utilisez 'echo' dans la boucle et conditionnel pour vérifier et assurez-vous que toutes vos variables contiennent les valeurs que vous pensez détenir. – bta