Pages : 1
#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
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
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.
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
Pages : 1