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 01/02/2020, à 11:31

diesel

[RESOLU] Petite question recherche de fichiers

Bonjour,

J'ai un répertoire (par exemple /home/jean-marie/toto) contenant des fichiers.

Je cherche à écrire un test qui me donnerait un résultat vrai si un type de fichier (défini par son extension : *.odt par exemple) n'est pas présent dans le répertoire.

Nota : Dans le cas où le test renvoie un résultat faux, il peut y avoir plusieurs fichiers avec l'extension testée dans le répertoire.

J'ai essayé [ ! -f "/home/jean-marie/toto/"*.odt ] qui me donne le bon résultat mais il me sort une insulte me disant qu'il y a trop d'arguments s'il y a plusieurs fichiers avec la terminaison .odt dans le répertoire.

Comment faire ?

Merci d'avance

Amicalement.

Jean-Marie

Dernière modification par diesel (Le 01/02/2020, à 13:05)


Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.

En ligne

#2 Le 01/02/2020, à 11:50

pingouinux

Re : [RESOLU] Petite question recherche de fichiers

Bonjour,
Par exemple

[ "$(find -name \*.odt)" ] && echo false || echo true

Ajouté :
Ou tout simplement

test ! "$(find -name \*.odt)"

Dernière modification par pingouinux (Le 01/02/2020, à 11:52)

Hors ligne

#3 Le 01/02/2020, à 12:02

diesel

Re : [RESOLU] Petite question recherche de fichiers

Bonjour Pingouinux et merci pour ta réponse.

J'ai essayé find mais j'ai renoncé (à tort peut-être) quand je n'ai pas trouvé d'option de find inhibant la sortie et renvoyant juste un code de résultat (trouvé ou pas)

Puis, je me suis dit que je devrais y arriver avec bash seul.

Alors, depuis, j'ai bien une solution qui donne le résultat attendu

[ ! -f "/home/jean-marie/toto/"*.odt 2>/dev/null ]

mais je ne trouve pas ça propre.

Amicalement.

Jean-Marie


Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.

En ligne

#4 Le 01/02/2020, à 12:14

pingouinux

Re : [RESOLU] Petite question recherche de fichiers

diesel #3 a écrit :

mais je ne trouve pas ça propre.

En effet. S'il y a plusieurs fichiers, ta commande ne retourne faux que parce qu'elle se termine en erreur

bash: [: too many arguments

Évidemment, comme tu caches le message d'erreur sous le tapis…

Hors ligne

#5 Le 01/02/2020, à 12:23

Sciensous

Re : [RESOLU] Petite question recherche de fichiers

je te propose:

[ $(/bin/ls "/home/jean-marie/toto/*.odt" |wc -l) -eq 1 ] && echo ok || echo KO

Dernière modification par Sciensous (Le 01/02/2020, à 12:24)


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#6 Le 01/02/2020, à 12:49

diesel

Re : [RESOLU] Petite question recherche de fichiers

@ Sciencious,

Je crains que tu te fasse écharper par nos gourous du script. wink lol lol

De plus, ça ne donne pas le résultat attendu puisque je veux un résultat vrai s'il n'y en a pas (0).

Amicalement.

Jean-Marie

Dernière modification par diesel (Le 01/02/2020, à 12:52)


Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.

En ligne

#7 Le 01/02/2020, à 12:59

Sciensous

Re : [RESOLU] Petite question recherche de fichiers

ouais mais je ne suis pas un gourou wink
je croyais que tu voulais que ce soit vrai s'il n'ya qu'un seul odt !!

si c'est au moins 1, avec retour vrai/faux:

[ $(/bin/ls "/home/jean-marie/toto/*.odt" |wc -l) -ge 1 ] && echo 1 || echo 0 

antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#8 Le 01/02/2020, à 13:00

Watael

Re : [RESOLU] Petite question recherche de fichiers

grrr.

s'il n'y a pas de sous-répertoires, simplement :

fileList=( "$rep"/*.odt )
((${#fileList[*]})) && echo "${#fileList[*]} fichier(s) présent(s)" || echo "aucun fichier présent"

ou alors, ajouter globstar...

Dernière modification par Watael (Le 01/02/2020, à 13:02)


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

Hors ligne

#9 Le 01/02/2020, à 13:05

diesel

Re : [RESOLU] Petite question recherche de fichiers

Watael a écrit :

grrr.

s'il n'y a pas de sous-répertoires, simplement :

fileList=( "$rep"/*.odt )
((${#fileList[*]})) && echo "${#fileList[*]} fichier(s) présent(s)" || echo "aucun fichier présent"

ou alors, ajouter globstar...

Évidement.

Merci Watael.

Amicalement.

Jean-Marie


Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.

En ligne

#10 Le 01/02/2020, à 13:09

Sciensous

Re : [RESOLU] Petite question recherche de fichiers

je préfère quand même un

/bin/ls "/home/jean-marie/toto/*.odt" 2>/dev/null |wc -l

antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#11 Le 01/02/2020, à 13:44

diesel

Re : [RESOLU] Petite question recherche de fichiers

Watael a écrit :

grrr.

s'il n'y a pas de sous-répertoires, simplement :

fileList=( "$rep"/*.odt )
((${#fileList[*]})) && echo "${#fileList[*]} fichier(s) présent(s)" || echo "aucun fichier présent"

ou alors, ajouter globstar...

Ça commençait bien, mais ça ne marche pas.

En effet, s'il n'y a pas de fichier .odt dans le répertoire, la variable filelist est une variables simple (pas un tableau) qui contient le développement de $rep suivi de "/*.odt" et donc

((${#fileList[*]}))

donne 1 et pas 0.

Amicalement.

Jean-Marie


Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.

En ligne

#12 Le 01/02/2020, à 14:30

diesel

Re : [RESOLU] Petite question recherche de fichiers

Bon, finalement, j'ai mis en œuvre la solution proposée par Pingouinux.

Amicalement.

Jean-Marie


Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.

En ligne

#13 Le 01/02/2020, à 15:01

Watael

Re : [RESOLU] Petite question recherche de fichiers

ah! "j'ai omis les œufs de caille" !

shopt -s nullglob

deux choses Sciensous :
- l'astérisque n'est pas développé entre guillemets; ls (grrr) va retourner une erreur, mais tu ne la verras pas tongue
- ici, ça pourrait fonctionner (je ne suis même pas certain de la pertinence de wc, puisqu'on cherche un résultat booléen (Vrai/Faux)), mais pourquoi "externaliser" ce que peut faire le shell ?


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

Hors ligne

#14 Le 01/02/2020, à 15:12

Sciensous

Re : [RESOLU] Petite question recherche de fichiers

merci pour ces remarques Watel. wink

mais pourquoi "externaliser" ce que peut faire le shell ?

parce que je ne suis pas un gourou du script (post 6) lol


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#15 Le 01/02/2020, à 17:41

diesel

Re : [RESOLU] Petite question recherche de fichiers

Watael a écrit :

ah! "j'ai omis les œufs de caille" !

"C'est une catastrophe..." wink smile smile

Amicalement.

Jean-Marie

Dernière modification par diesel (Le 01/02/2020, à 17:41)


Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.

En ligne

#16 Le 01/02/2020, à 18:18

melixgaro

Re : [RESOLU] Petite question recherche de fichiers

diesel a écrit :
Watael a écrit :

ah! "j'ai omis les œufs de caille" !

"C'est une catastrophe..." wink smile smile

Amicalement.

Jean-Marie

Faut-il aussi réciter la formule magique lorsqu'on utilise la commande dans un terminal ? big_smile


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#17 Le 01/02/2020, à 18:39

diesel

Re : [RESOLU] Petite question recherche de fichiers

melixgaro a écrit :

Faut-il aussi réciter la formule magique lorsqu'on utilise la commande dans un terminal ? big_smile

C'est même indispensable ! lol lol lol

Amicalement.

Jean-Marie


Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.

En ligne