Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/05/2020, à 12:16

joe217

find grep

Bonjour,
j'aimerais écrire un script qui cherche tous les fichiers d’extension .pdf à partir du répertoire personnel de l’utilisateur
et
     indique sur la sortie standard le nombre de fichiers traités.

#!/bin/zsh

for filename in *

do
if [[ -f $filename ]]
then
find /$filename -name " *.pdf " -print
fi
   
done

mais ça ne marche pas
merci

Hors ligne

#2 Le 22/05/2020, à 12:19

Watael

Re : find grep

salut,

pas besoin de boucle.

find repPerso/ -type f -name '*.pdf'

Dernière modification par Watael (Le 22/05/2020, à 12:19)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 22/05/2020, à 12:33

joe217

Re : find grep

Watael a écrit :

salut,

pas besoin de boucle.

find repPerso/ -type f -name '*.pdf'

mais j'ai un problème avec ça; les arguments pour -type devraient contenir seulement une lettre
c'est ce que j'obtiens

Hors ligne

#4 Le 22/05/2020, à 13:04

Watael

Re : find grep

je ne comprends pas ce que tu dis.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#5 Le 23/05/2020, à 13:00

joe217

Re : find grep

Watael a écrit :

je ne comprends pas ce que tu dis.

je dois écrire un script qui parcourt les fichiers de mon répertoire courant et qui indique sur la sortie standard le nombre de fichiers traités;

#!/bin/zsh
for filename in *
do
find -type f -name '*.pdf' -print
done

mais ça ne marche pas;
je reçois ça;

find: les chemins doivent précéder l'expression : fichier1.txt 
.....

merci

Hors ligne

#6 Le 23/05/2020, à 14:44

Watael

Re : find grep

la boucle ne sert toujours à rien.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#7 Le 23/05/2020, à 20:28

pingouinux

Re : find grep

Bonsoir,

find repertoire_de_depart -type f -name '*.pdf' -ls | wc -l

Hors ligne

#8 Le 24/05/2020, à 13:24

LeoMajor

Re : find grep

bonjour,

post #3; un lapsus peut-être avec le type mime ? find n'a pas d'option mime
find ... -type f ; fichier régulier, plat, ou binaire ; similaire à  test -f  fichier ou  [ -f fichier ]

shopt -s globstar nullglob
unset pdfs; unset c; for item in ~/Documents/**; do if [ -f "$item" ]; then mime=$(file -bi "$item" 2>/dev/null); if [[ "$mime" =~ pdf ]]; then pdfs+=("$item"); ((c++)); fi; fi; done; echo "$c, ${#pdfs[@]}, fichiers pdf"
for item in "${!pdfs[@]}"; do echo "$item: ${pdfs[$item]}"; done 

Hors ligne

#9 Le 24/05/2020, à 13:59

Watael

Re : find grep

salut,

à quoi sert c ? c'est le nombre d'éléments dans le tableau, non ?

les guillemets entre double-crochets sont facultatifs.

Dernière modification par Watael (Le 24/05/2020, à 14:06)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#10 Le 24/05/2020, à 16:37

LeoMajor

Re : find grep

je conseille de mettre des guillemets avec [ ] et aussi [[  ]], qui ne sécurisent rien du tout.

aa="chocolat au lait"
[[  $(inline-detox <<<$aa)  ==  $(inline-detox < <(printf  %s\n  $aa)) ]] && echo "ok" || echo "ko"
[[  $(inline-detox <<<"$aa")  ==  $(inline-detox < <(printf  "%s\n"  "$aa")) ]] && echo "ok" || echo "ko"

avec md5sum, c'est peut-être plus fragrant.

Hors ligne

#11 Le 24/05/2020, à 19:22

Watael

Re : find grep

je n'ai pas inline-detox; tes exemples, sans leur sortie, et sans  set -x ne servent à rien.

de plus, je ne parle pas des guillemets autour d'un Développement de paramètres dans une Substitution de processus dans une Substitution de commandes,
mais d'une bête variable plate ($mime) pour laquelle les guillemets sont facultatifs entre double-crochets.
d'ailleurs, dans tes deux exemples, tu n'en mets pas (je le vois !) autour des Substitutions de commandes. smile

et la variable c, elle sert à quoi ?

Dernière modification par Watael (Le 24/05/2020, à 19:23)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne