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 29/01/2019, à 18:38

marcusbaslerus

la commande find me rend chêvre [RÉSOLU]

Bonjour,

La commande find à une réaction à laquel je ne m'attendais pas du tout :

Quand j’exécute cette commande depuis mon répertoire home :

marc@marc-e6430s:~$ find /media/marc/serveur_ics/test_bak -name tar*
/media/marc/serveur_ics/test_bak/tar_2019-01-29_165248.log
/media/marc/serveur_ics/test_bak/tar_2019-01-29_165303.log
/media/marc/serveur_ics/test_bak/tar_2019-01-29_165328.log
marc@marc-e6430s:~$

j'obtiens la liste des fichiers qui commence par tar du répertoire /media/marc/serveur_ics/test_bak smile
jusqu'ici tout va bien!

Si j’exécute cette commande depuis un répertoire "opt" de mon home :

marc@marc-e6430s:~/opt$ find /media/marc/serveur_ics/test_bak -name tar*
marc@marc-e6430s:~/opt$

je n'obtiens rien à par le prompt... sad


S'il y a quelqu’un qui y comprends quelque chose je suis preneur,
Marc

Dernière modification par marcusbaslerus (Le 30/01/2019, à 12:55)

Hors ligne

#2 Le 29/01/2019, à 18:53

pingouinux

Re : la commande find me rend chêvre [RÉSOLU]

Bonjour,

find ..... -name tar\*

ou

find ..... -name 'tar*'

Édité :
Sans doute n'y a-t-il pas de fichier tar* dans ~, et y en a-t-il un seul dans ~/opt. S'il y en avait eu plusieurs, tu aurais eu un message d'erreur.

Dernière modification par pingouinux (Le 29/01/2019, à 19:20)

Hors ligne

#3 Le 29/01/2019, à 20:30

erresse

Re : la commande find me rend chêvre [RÉSOLU]

@pingouinux: Heuuu.... Moi pas comprendre ton explication, là...
La même commande, faisant référence au même chemin (sur /media/... et non sur ~ ou ~/opt) renvoie une liste de fichiers existants ou rien selon qu'elle est lancée depuis l'espace utilisateur "de base" ou depuis un sous-répertoire de ce même espace utilisateur ?!?
Tu trouves ça logique ?


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#4 Le 29/01/2019, à 20:54

pingouinux

Re : la commande find me rend chêvre [RÉSOLU]

erresse #3 a écrit :

Tu trouves ça logique ?

Oui…
Si ~ ne contient aucun fichier commençant par tar, la commande qui va être lancée est celle-ci (pas d'expansion de *)

find ..... -name tar*

et il va trouver les fichiers.

Si ~/opt contient un fichier tar_bidule, la commande va être

find ..... -name tar_bidule

et ce fichier ne sera pas trouvé dans le répertoire de recherche.

C'est la seule explication que je vois, qui devra être confirmée par marcusbaslerus.

Hors ligne

#5 Le 29/01/2019, à 21:46

Nuliel

Re : la commande find me rend chêvre [RÉSOLU]

Ho, la différence est fine!
Pas besoin d'avoir des guillemets doubles autour de tar* vu que c'est interprété?

Hors ligne

#6 Le 29/01/2019, à 22:05

nam1962

Re : la commande find me rend chêvre [RÉSOLU]

Chez moi :

[moi@ordipro ~]$ find /dev -name std*
/dev/stderr
/dev/stdout
/dev/stdin
[moi@ordipro ~]$ cd /opt
[moi@ordipro opt]$ find /dev -name std*
/dev/stderr
/dev/stdout
/dev/stdin
[moi@ordipro opt]$

...donc perplexe aussi...

[Edit] çà j'ai pas :

marcusbaslerus a écrit :

(...)

Si j’exécute cette commande depuis un répertoire "opt" de mon home (...)

...faute de "opt" sur mon /home, je teste "Desktop" :

[moi@ordipro Desktop]$ find /dev -name std*
/dev/stderr
/dev/stdout
/dev/stdin
[moi@ordipro Desktop]$

Dernière modification par nam1962 (Le 29/01/2019, à 22:13)


[ Modéré ]

Hors ligne

#7 Le 29/01/2019, à 22:15

pingouinux

Re : la commande find me rend chêvre [RÉSOLU]

@nam1962 #6 :
Pour voir la différence, relance la commande à partir de ton home, après y avoir créé le fichier std_machin.

Hors ligne

#8 Le 29/01/2019, à 22:22

nam1962

Re : la commande find me rend chêvre [RÉSOLU]

Uhhh..

Dernière modification par nam1962 (Le 29/01/2019, à 22:27)


[ Modéré ]

Hors ligne

#9 Le 29/01/2019, à 22:27

pingouinux

Re : la commande find me rend chêvre [RÉSOLU]

@nam1962 #8 :
Tu aurais dû faire

find /dev -name std*

Si maintenant tu ajoutes std_bidule dans ton home, et relances la commande, tu obtiendras un message d'erreur.

Pour que le résultat soit celui attendu

find /dev -name std\*

Hors ligne

#10 Le 30/01/2019, à 12:54

marcusbaslerus

Re : la commande find me rend chêvre [RÉSOLU]

Merci à tous pour vos réponse et particulièrement à pingouinux pour m'avoir donné la solution.

Je confirme, il y avait bien un fichier nomé "tar-list.txt" dans mon répertoire "opt".
J'ai essayé la commande :

marc@marc-e6430s:~/opt$ find /media/marc/serveur_ics/test_bak/ -name tar\*
/media/marc/serveur_ics/test_bak/tar_2019-01-29_165248.log
/media/marc/serveur_ics/test_bak/tar_2019-01-29_165303.log
/media/marc/serveur_ics/test_bak/tar_2019-01-29_165328.log
marc@marc-e6430s:~/opt$

Et dans la lancé la commande :

marc@marc-e6430s:~/opt$ find /media/marc/serveur_ics/test_bak/ -name "tar*"
/media/marc/serveur_ics/test_bak/tar_2019-01-29_165248.log
/media/marc/serveur_ics/test_bak/tar_2019-01-29_165303.log
/media/marc/serveur_ics/test_bak/tar_2019-01-29_165328.log
marc@marc-e6430s:~/opt$

qui fonctionne également. ça fonctionne aussi avec des simples cotes.
J'ai ensuite renommé mon fichier "tar-list.txt" pour voir : la commande avec "-name tar*" fonctionne alors aussi.
Quand on cherche la signification de l'antislash sur le net, on peu trouver

https://abs.traduc.org/abs-5.1-fr/ch05s02.html#escp a écrit :

L'échappement (\) précédant un caractère dit au shell d'interpréter le caractère littéralement

Ok, mais de la à faire le lien avec la réaction de find en mettant ou omettant le "\" avant "*". J'en aurais été bien incapable.
Marc.

Hors ligne

#11 Le 30/01/2019, à 15:30

erresse

Re : la commande find me rend chêvre [RÉSOLU]

KOLOSSALE FINESSE !!!
Mais on a un peu de mal à comprendre pourquoi il y a expansion de l'argument de recherche dans le répertoire courant pour aller rechercher dans un autre répertoire qu'on spécifie dans la commande...
Ça n'est pas un peu compliqué, comme fonctionnement ?!?


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#12 Le 30/01/2019, à 17:52

pingouinux

Re : la commande find me rend chêvre [RÉSOLU]

erresse #11 a écrit :

Ça n'est pas un peu compliqué, comme fonctionnement ?!?

Non, car l'expansion des arguments est systématique pour find, comme pour toute autre commande. Il faut donc protéger les caractères spéciaux de ces arguments pour les transmettre tels quels à la commande.

Hors ligne

#13 Le 30/01/2019, à 21:12

melixgaro

Re : la commande find me rend chêvre [RÉSOLU]

Autrement dit, la syntaxe employée au message 1 n'est pas du tout la bonne. Comme le dit pingouinux, le shell commence par résoudre l'expression tar* et transmet ensuite le résultat à find. S'il n'y a pas de fichier commençant par tar dans le répertoire courant, l'expression tar* est transmise. Sinon, c'est le nom du ou des fichiers commençant par tar qui sont transmis.


Linux depuis ~2007. Xubuntu seulement.

Hors ligne