trouver le nombre de caractères dans un script shell ligne

comment puis-je compter les caractères (a-z, 0-9, A-Z) à partir de fichiers d'un répertoire qui a d'autres sous-répertoires .J'ai essayé avec grep et wc mais ça n'a pas marché

1
total.Je dois créer un scipt qui compte le nombre total de caractères d'un répertoire qui peut contenir un autre sous-répertoire dans lequel peuvent être les fichiers avec les caractères
ajouté l'auteur user3022764, source
Voulez-vous par nombre de fichiers OU un nombre total?
ajouté l'auteur anubhava, source

2 Réponses

Utilisez cet egrep:

egrep -ro '[a-zA-Z0-9]+' *|tr -d '\n'|wc -m

Ou ca:

egrep -ro '[[:alnum:]]+' "$1" |tr -d '\n'|wc -m
1
ajouté
mais le chemin vers le répertoire est un argument $ 1.Comment puis-je l'envoyer?
ajouté l'auteur user3022764, source
donc ... je dois créer un one-liner dans un script thet reçoit comme argument le chemin d'un répertoire qui contient plus de fichiers et d'autres sous-répertoires. Le script doit écrire dans/home/student/character03 le nombre total de chr. .Et je dois aussi écrire dans un autre fichier.err toutes les erreurs qui apparaissent lors de l'exécution du script
ajouté l'auteur user3022764, source
@glennjackman: Merci, Très bon point, j'essayais de supprimer \ n dans grep lui-même mais en utilisant tr le simplifie.
ajouté l'auteur anubhava, source
@ user3022764: Essayez ceci: egrep -ro '[a-zA-Z0-9] +' "$ 1" | tr -d '\ n' | wc -m
ajouté l'auteur anubhava, source
bonne idée, mais vous comptez également beaucoup de nouvelles lignes. ajouter tr -d '\ n' avant wc
ajouté l'auteur glenn jackman, source
Notez que la classe de caractères [[: alnum:]] est équivalente à [a-zA-Z0-9] (dans la locale C) et pourrait être plus facile sur le les yeux
ajouté l'auteur glenn jackman, source

This is a script that when you ll run it given the full path of the main folder ( the folder that contains the sub-directories which contains the text files ) as first argument will print out the total count --->>>

## $1 will be the total path

## This variable will be
## a list of all sub-directories
sub_dirs=`ls $1`

## Total holding count variable
count=0

## Looping over the
## each sub-directory
for i in $sub_dirs;
do
    ## Looping over
    ## each file
    for j in `ls $1/$i`;
    do
        ## Counting the characters
        total_characters=`wc -c "$1/$i/$j" | awk ' { print $1 } '`;

        ## Adding the result to the count
        count=`expr $count + $total_characters`;
    done
done

## Printing out the total count
echo $count

J'espère que cela aide ... comme je n'ai pas entièrement compris la question ...

Salutations de la Grèce Séjour UNIX!

0
ajouté
j'ai besoin d'un onliner avec des tuyaux et> je pense
ajouté l'auteur user3022764, source
Je dois créer un onliner dans un script comme je l'ai déjà dit. il reçoit comme argument le chemin vers un répertoire qui contient des répertoires et des fichiers ohers. et je dois rediriger le nombre total de caractères à partir des mots qui se trouvent dans ces fichiers dans/home/student/chars .But seulement 0-9 et az , AZ, sans espace d'autres caractères spéciaux. Dans le fichier et, dans le fichier file.err, le script doit écrire les erreurs qui apparaissent lors de l'exécution du script. C'est un devoir à OS et je viens juste de commencer les scripts shell.please help. Demain j'ai un exam
ajouté l'auteur user3022764, source
oui.parce que le système va générer les fichiers et les répertoires.Il est un devoir et j'ai toutes les entrées.Son mon onliner starst comme ceci: trouver $ 1 -type f/grep ........ et le système sera aussi générer des erreurs pour moi de les rediriger dans un fichier appelé .home/student/chars03.err
ajouté l'auteur user3022764, source
Ohh maintenant je vois ... j'essaierai ceci quand je serai sur ma ville je voyagerai bientôt leur je suis à une autre ville où mon collège est. Juste une question que vous voulez que les fichiers restent les mêmes après le compte?
ajouté l'auteur L0aD1nG, source