Sous-dossiers en ordre alphabétique et extraire des donnée du fichier
Résolu/Fermé
billyV33
Messages postés
23
Date d'inscription
dimanche 10 février 2019
Statut
Membre
Dernière intervention
9 mars 2022
-
Modifié le 15 févr. 2019 à 23:37
lEprofSonDkon Messages postés 211 Date d'inscription jeudi 13 décembre 2018 Statut Membre Dernière intervention 8 octobre 2022 - 16 févr. 2019 à 23:32
lEprofSonDkon Messages postés 211 Date d'inscription jeudi 13 décembre 2018 Statut Membre Dernière intervention 8 octobre 2022 - 16 févr. 2019 à 23:32
A voir également:
- Dans le document à télécharger, les références des pièces détachées sont affichées par pays, puis par type de pièces. réorganisez le document pour avoir : les pays dans l'ordre alphabétique : allemagne, espagne, france et italie ; et pour chaque pays, les pièces d'auto, de bateau et de moto dans cet ordre.
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Site de telechargement - Accueil - Outils
- Les indicatifs des pays - Guide
- Telecharger whatsapp pour pc - Télécharger - Messagerie
5 réponses
lEprofSonDkon
Messages postés
211
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
8 octobre 2022
13
Modifié le 16 févr. 2019 à 01:13
Modifié le 16 févr. 2019 à 01:13
salut,
c'est peut-être compliqué, mais si tu insiste pour utiliser
ou alors tu utilises le shell, qui, lui, trie les fichiers par ordre alphabétique :
s'il faut descendre plus loin dans le
c'est peut-être compliqué, mais si tu insiste pour utiliser
find, il faut ajouter des caractères NULL (
\0) à la sortie de
find, puis faire lire son entrée à
sortavec ce même caractère NULL comme séparateur, puis passer cette sortie à
xargspour effectuer le traitement sur chaque fichier. ouf! c'est tout.
$ find "$repSrc" -type f -print0 | sort -z | xargs -0 -I {} cut -c3 {} >fichier.out
ou alors tu utilises le shell, qui, lui, trie les fichiers par ordre alphabétique :
for d in "$repSrc"/*/ do for f in "$d"/* do test -f "$f" && cut -3 "$f" done done >fichier.out/!\ pas testé.
s'il faut descendre plus loin dans le
$repSrc, en bash uniquement :
shopt -s globstar nullglob for f in "$repSrc"/**/* do test -f "$f" && cut -c 3 "$f" done >fichier.outà vérifier...
billyV33
Messages postés
23
Date d'inscription
dimanche 10 février 2019
Statut
Membre
Dernière intervention
9 mars 2022
16 févr. 2019 à 01:49
16 févr. 2019 à 01:49
Bonjour lEprofSonDkon !
find ./dossier/ -type f -print0 | sort -z | xargs -0 -I {} head -c3 {} > fichier.out
on dirait que le sort ne tri pas les sous-dossiers en ordre alphabétique
dossier/
/sous-dos3/ texte dans le fichier :
fichierA --> ton aide!
/sous-dos1/
fichierB --> Merci
/sous-dos2/
fichierC --> de
donc un premier tri pour avoir sous-dos1 sous-dos2 sous-dos3 et lire dans chacun d’eux son fichier pour avoir
Merci de ton aide! :)
Mais je viens d'apprendre qu'on peut faire suivre deux cmds avec xargs! WOW!
c'est presque ce que je cherche mais toujours pas ma phrase dans l'ordre
j'ai mis head -c3 à la place de cut pour avoir les 3 octets des fichiers ce qui fonctionne très bien
$ find ./artefacts/ -type f -print0 | sort -z | xargs -0 head -c3 {} ;
head: impossible d'ouvrir '{}' en lecture: Aucun fichier ou dossier de ce type
j'ai les sous-dossiers bien en ordre alphabétique.. je ne comprend pas trop l'erreur par contre!
Mais je me demande si je ne dois pas avoir les fichier en ordre alphabétique...
ça va me prendre un moment pour confirmer mais je reviens le plus vite possible!
Merci énormément lEprofSonDkon!!!
:):)
find ./dossier/ -type f -print0 | sort -z | xargs -0 -I {} head -c3 {} > fichier.out
on dirait que le sort ne tri pas les sous-dossiers en ordre alphabétique
dossier/
/sous-dos3/ texte dans le fichier :
fichierA --> ton aide!
/sous-dos1/
fichierB --> Merci
/sous-dos2/
fichierC --> de
donc un premier tri pour avoir sous-dos1 sous-dos2 sous-dos3 et lire dans chacun d’eux son fichier pour avoir
Merci de ton aide! :)
Mais je viens d'apprendre qu'on peut faire suivre deux cmds avec xargs! WOW!
c'est presque ce que je cherche mais toujours pas ma phrase dans l'ordre
j'ai mis head -c3 à la place de cut pour avoir les 3 octets des fichiers ce qui fonctionne très bien
$ find ./artefacts/ -type f -print0 | sort -z | xargs -0 head -c3 {} ;
head: impossible d'ouvrir '{}' en lecture: Aucun fichier ou dossier de ce type
j'ai les sous-dossiers bien en ordre alphabétique.. je ne comprend pas trop l'erreur par contre!
Mais je me demande si je ne dois pas avoir les fichier en ordre alphabétique...
ça va me prendre un moment pour confirmer mais je reviens le plus vite possible!
Merci énormément lEprofSonDkon!!!
:):)
lEprofSonDkon
Messages postés
211
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
8 octobre 2022
13
Modifié le 16 févr. 2019 à 02:51
Modifié le 16 févr. 2019 à 02:51
en traitant les dossiers, et si il n'y a qu'un seul fichier dans chaque sous-dossier :
il faut adapter à ta "configuration".
si j'utilise la hiérarchie donnée en exemple, avec
sans la structure complète, je ne crois pas pouvoir aider davantage.
find dossier/ -mindepth 1 -type d -printf '%p\0' | sort -z | xargs -0 -I {} bash -c 'cut -b 3 "$1"/*' _ {}
il faut adapter à ta "configuration".
si j'utilise la hiérarchie donnée en exemple, avec
bash -c 'echo -n "$(<"$1"/*)"' _ {}; echo, j'obtiens bien la phrase.
sans la structure complète, je ne crois pas pouvoir aider davantage.
billyV33
Messages postés
23
Date d'inscription
dimanche 10 février 2019
Statut
Membre
Dernière intervention
9 mars 2022
16 févr. 2019 à 03:29
16 févr. 2019 à 03:29
Oui je comprend ça :)
le bash pas encore vu comme ça en ligne de commande mais tes exemples m'aident beaucoup.
Finalement, après avoir décortiqué en dehors du terminal
vu que j'ai trouver la réponse à l'énigme mais je ne trouve pas la façon de la traiter
je viens de me rendre compte que se sont les fichiers que je dois mettre en ordre alphabétique
Désolée pour ça !mais j'avais demandé et on m'avait dit que c'était les dossiers... donc...
là il faut que je liste en ordre alphabétique les fichiers qui se trouvent dans les sous-dossiers et extraire les 3 octets
Avec tes explications et exemples je vais me remettre au travail!! :)
Merci beaucoup beaucoup!!!
Pour répondre à ton énigme :):)
tree
.
├── dossierParent dossier
│ ├── alasta sous-dossier
│ │ └── admi fichier
│ ├── alat
│ │ └── ac
│ ├── apupy
│ │ └── taig
│ ├── aukiol
│ │ └── desac
│ ├── epat
│ │ └── neige
│ ├── ero
│ │ └── lecaille
│ ├── etu
│ │ └── reem
│ .... ainsi de suite...
le bash pas encore vu comme ça en ligne de commande mais tes exemples m'aident beaucoup.
Finalement, après avoir décortiqué en dehors du terminal
vu que j'ai trouver la réponse à l'énigme mais je ne trouve pas la façon de la traiter
je viens de me rendre compte que se sont les fichiers que je dois mettre en ordre alphabétique
Désolée pour ça !mais j'avais demandé et on m'avait dit que c'était les dossiers... donc...
là il faut que je liste en ordre alphabétique les fichiers qui se trouvent dans les sous-dossiers et extraire les 3 octets
Avec tes explications et exemples je vais me remettre au travail!! :)
Merci beaucoup beaucoup!!!
Pour répondre à ton énigme :):)
tree
.
├── dossierParent dossier
│ ├── alasta sous-dossier
│ │ └── admi fichier
│ ├── alat
│ │ └── ac
│ ├── apupy
│ │ └── taig
│ ├── aukiol
│ │ └── desac
│ ├── epat
│ │ └── neige
│ ├── ero
│ │ └── lecaille
│ ├── etu
│ │ └── reem
│ .... ainsi de suite...
lEprofSonDkon
Messages postés
211
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
8 octobre 2022
13
>
billyV33
Messages postés
23
Date d'inscription
dimanche 10 février 2019
Statut
Membre
Dernière intervention
9 mars 2022
Modifié le 16 févr. 2019 à 03:47
Modifié le 16 févr. 2019 à 03:47
find /tmp/dossier/ -type f -printf '%h#%f\0' | sort -z -t '#' -k2 | xargs -0 printf '%s\n'
billyV33
Messages postés
23
Date d'inscription
dimanche 10 février 2019
Statut
Membre
Dernière intervention
9 mars 2022
16 févr. 2019 à 04:11
16 févr. 2019 à 04:11
GENIALE!!! Merci merci!
vraiment ! l'ordre des fichiers sortent à merveille!! Merci encore!!!
La ligne est un peu complexe pour moi mais je la comprend assez bien
par contre ce que je ne pige pas c'est comment ajouter mon head -c3 à la fin!
pour avoir les 3 octets
vraiment un mystère pour moi.. je ne comprend pas la logique
pourquoi je ne peux ajouter une simple suite après xargs -0 printf '%s\n' ?
je devrais pouvoir continuer en ajoutant
{} head -c3 {};
ou
| xargs -0 printf '%s\n' {} | xargs head -c3
non?
mais non!
il ne traite pas le head mais je ne comprends pas pourquoi désolée ...
vraiment ! l'ordre des fichiers sortent à merveille!! Merci encore!!!
La ligne est un peu complexe pour moi mais je la comprend assez bien
par contre ce que je ne pige pas c'est comment ajouter mon head -c3 à la fin!
pour avoir les 3 octets
vraiment un mystère pour moi.. je ne comprend pas la logique
pourquoi je ne peux ajouter une simple suite après xargs -0 printf '%s\n' ?
je devrais pouvoir continuer en ajoutant
{} head -c3 {};
ou
| xargs -0 printf '%s\n' {} | xargs head -c3
non?
mais non!
il ne traite pas le head mais je ne comprends pas pourquoi désolée ...
lEprofSonDkon
Messages postés
211
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
8 octobre 2022
13
16 févr. 2019 à 04:49
16 févr. 2019 à 04:49
meuh, non ! tu remplaces simplement
il n'était là que pour te montrer ce que traite
printfpar ta commande.
il n'était là que pour te montrer ce que traite
xargs. :)
billyV33
Messages postés
23
Date d'inscription
dimanche 10 février 2019
Statut
Membre
Dernière intervention
9 mars 2022
16 févr. 2019 à 05:19
16 févr. 2019 à 05:19
Bonsoir lEprofSonDkon
Je ne comprend pas trop ta réponse
j'ai essayer plusieurs remplacements mais vu que je ne comprend pas le pourquoi je ne trouve pas de solution mamma mia! je pense que je vais rendre mon TP pas terminé... la seule chose que j'ai réussi c'est de trouver la prophétie mais pas comment le faire en ligne de cmd
find ./artefacts/ -type f -printf '%h#%f\0' | sort -z -t '#' -k2 | xargs -0 head -c3
head: impossible d'ouvrir './artefacts/verisessa#accusons' en lecture: Aucun fichier ou dossier de ce type
Merci beaucoup de ton aide lEprofSonDkon :)
je vais devoir aller me coucher ... demain je travaille!
peut-être que la nuit va me débloquer un neurone ... on ne sait jamais!
Je reviendrais demain si toujours disponible à m'aider! :):)
Merci beaucoup et bonne soirée
Je ne comprend pas trop ta réponse
j'ai essayer plusieurs remplacements mais vu que je ne comprend pas le pourquoi je ne trouve pas de solution mamma mia! je pense que je vais rendre mon TP pas terminé... la seule chose que j'ai réussi c'est de trouver la prophétie mais pas comment le faire en ligne de cmd
find ./artefacts/ -type f -printf '%h#%f\0' | sort -z -t '#' -k2 | xargs -0 head -c3
head: impossible d'ouvrir './artefacts/verisessa#accusons' en lecture: Aucun fichier ou dossier de ce type
Merci beaucoup de ton aide lEprofSonDkon :)
je vais devoir aller me coucher ... demain je travaille!
peut-être que la nuit va me débloquer un neurone ... on ne sait jamais!
Je reviendrais demain si toujours disponible à m'aider! :):)
Merci beaucoup et bonne soirée
lEprofSonDkon
Messages postés
211
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
8 octobre 2022
13
Modifié le 16 févr. 2019 à 05:56
Modifié le 16 févr. 2019 à 05:56
find ./artefacts/ -type f -printf '%h#%f\0' | sort -z -t '#' -k2 | sed 's/#/\//g' | xargs -0 head -c3
ben oui, si on ne restaure pas les chemins vers les fichiers, ils ne seront pas trouvé !
ton prof va vraiment croire que tu as trouvé ça toute seule ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
billyV33
Messages postés
23
Date d'inscription
dimanche 10 février 2019
Statut
Membre
Dernière intervention
9 mars 2022
16 févr. 2019 à 21:40
16 févr. 2019 à 21:40
Bonjour lEprofSonDkon !!
me revoilà!
Merci INFINIMENT!
Biensûr que non! haha! mais je ne lui rendrais pas la cmd telle quelle!
maintenant que j'ai réussi jusqu'à la fin grâce à ton aide et, pas juste avoir trouvé la réponse mais aussi avoir compris pourquoi ça ne fonctionnait pas entre le sort et le head!!!
En plus avec tous les exemples que tu m'as donnés j'ai découverts des astuces très intéressantes! Merci!!
Mais si jamais je ne trouve pas avant la date butoir, je ne suis pas à 4 points près! ça ne me dérange pas de dire que je me suis fais aider en expliquant mes démarches précédentes, en expliquant la commande que tu m'as donnée pour montrer que je comprend ce qui se passe et pas juste un copie coller pur et bête !
J'ai terminé en ajoutant un grep -vh pour éliminer les "==>" de la sortie et envoyé dans un fichier tmp... c'est sûr je pourrais utiliser la contre redirection... maintenant que j'y pense ... pour continuer la cmd avec le tr
je vais tester après j'étais trop contente de voir mission réussite!!!
et le tr -d '\n' pour éliminer les sauts de fin de lignes. Ce qui m'a permis d'avoir les mots complets...c'était bien pensé comme astuce! je ne pouvais pas tout simplement les mettre sur une ligne sinon j'avais juste les 3 octets avec un espace entre chaque. Ce qui me don nai t des cho ses dan s le gen re! :)
find ./artefacts/ -type f -printf '%h#%f\0' | sort -z -t '#' -k2 | sed 's/#/\//g' | xargs -0 head -c3 | grep -vh "==>" > prophetietmp.txt
tr -d '\n' < prophetietmp.txt > prophetie.txt
Il vaut mieux comprendre qu'avoir un 100% à l'aveugle!!
encore merci beaucoup pour ce coup de main
ce fut un plaisir!!
Bonne journée!
je vais mettre la question à Résolue! :):):)
me revoilà!
Merci INFINIMENT!
Biensûr que non! haha! mais je ne lui rendrais pas la cmd telle quelle!
maintenant que j'ai réussi jusqu'à la fin grâce à ton aide et, pas juste avoir trouvé la réponse mais aussi avoir compris pourquoi ça ne fonctionnait pas entre le sort et le head!!!
En plus avec tous les exemples que tu m'as donnés j'ai découverts des astuces très intéressantes! Merci!!
Mais si jamais je ne trouve pas avant la date butoir, je ne suis pas à 4 points près! ça ne me dérange pas de dire que je me suis fais aider en expliquant mes démarches précédentes, en expliquant la commande que tu m'as donnée pour montrer que je comprend ce qui se passe et pas juste un copie coller pur et bête !
J'ai terminé en ajoutant un grep -vh pour éliminer les "==>" de la sortie et envoyé dans un fichier tmp... c'est sûr je pourrais utiliser la contre redirection... maintenant que j'y pense ... pour continuer la cmd avec le tr
je vais tester après j'étais trop contente de voir mission réussite!!!
et le tr -d '\n' pour éliminer les sauts de fin de lignes. Ce qui m'a permis d'avoir les mots complets...c'était bien pensé comme astuce! je ne pouvais pas tout simplement les mettre sur une ligne sinon j'avais juste les 3 octets avec un espace entre chaque. Ce qui me don nai t des cho ses dan s le gen re! :)
find ./artefacts/ -type f -printf '%h#%f\0' | sort -z -t '#' -k2 | sed 's/#/\//g' | xargs -0 head -c3 | grep -vh "==>" > prophetietmp.txt
tr -d '\n' < prophetietmp.txt > prophetie.txt
Il vaut mieux comprendre qu'avoir un 100% à l'aveugle!!
encore merci beaucoup pour ce coup de main
ce fut un plaisir!!
Bonne journée!
je vais mettre la question à Résolue! :):):)
lEprofSonDkon
Messages postés
211
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
8 octobre 2022
13
16 févr. 2019 à 23:32
16 févr. 2019 à 23:32
continue comme ça, c'est très bien.