logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 29-06-2023 04:20:31

crap0
Membre
Lieu : Bruxelles (Be)
Distrib. : debian 12
Noyau : Linux 6.1.0-17-amd64
(G)UI : i3
Inscription : 27-09-2018
Site Web

cmd 'cat' : concaténation de fichiers dans des sous-dossiers

Bonjour
et merci d'avance ..

J'utilise la commande cat pour concaténer différents fichiers.
J'avais l'habitude que ceux-ci soit dans le même répertoire jusqu'à lors.

Pour concaténer des fichiers réparti dans différents sous-dossiers d'un même répertoire de travaille, j'essaye cette commande suivant qui reste sans résultats.

cat ./*.txt >> total.txt



Pourriez vous corriger mon erreur ?
Merci de votre aide !

a+

Hors ligne

#2 29-06-2023 07:39:26

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : cmd 'cat' : concaténation de fichiers dans des sous-dossiers

Hello
avec ta commande tu rediriges seulement tout les fichiers texte du répertoire courant vers total.txt
il faudrait mieux utiliser find
à lire dans le wiki
https://debian-facile.org/doc:systeme:f … t-execdir1

-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

En ligne

#3 29-06-2023 15:41:31

nlancien
Membre
Distrib. : Debian Stable
Noyau : Linux 4.19.0-12-amd64
(G)UI : Openbox
Inscription : 17-07-2019

Re : cmd 'cat' : concaténation de fichiers dans des sous-dossiers


shopt -s globstar # On active le globbing avec ** il ne l'est pas par defaut
cat **/*.txt >>total.txt
 

Dernière modification par nlancien (29-06-2023 18:17:30)

Hors ligne

#4 30-06-2023 08:01:58

raleur
Membre
Inscription : 03-10-2014

Re : cmd 'cat' : concaténation de fichiers dans des sous-dossiers

Croutons a écrit :

avec ta commande tu rediriges seulement tout les fichiers texte du répertoire courant vers total.txt


Non, cette commande ne redirige aucun fichier ce qui ne veut rien dire). Ell lit des fichiers et redirige sa soirtie standard.

nlancien a écrit :

cat **/*.txt >>total.txt


Attention, ** marche seulement avec le shell bash et pas le shell non interactif par défaut (sh -> dash) dans les scripts.
D'autre part cette commande ne cherche pas dans le répertoire courant.

Dernière modification par raleur (30-06-2023 08:02:41)


Il vaut mieux montrer que raconter.

Hors ligne

#5 03-07-2023 09:00:24

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : cmd 'cat' : concaténation de fichiers dans des sous-dossiers

Hello,

Comme l'a dit Croutons, il serait plus judicieux d'utiliser find.
Par exemple :

find . -type f -name "*.txt" -exec cat '{}' \+ > total.txt



Edit: Espace de trop corrigé.

Dernière modification par Tawal (20-03-2024 11:19:25)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#6 03-07-2023 09:05:30

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : cmd 'cat' : concaténation de fichiers dans des sous-dossiers

hello
il me semble que si tu écrase le fichier total.txt a chaque fois sa va pas le faire?

-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

En ligne

#7 03-07-2023 09:42:09

vv222
Administrateur
Lieu : Bretagne
Distrib. : Debian Sid
(G)UI : sway
Inscription : 18-11-2013
Site Web

Re : cmd 'cat' : concaténation de fichiers dans des sous-dossiers

La commande de Tawal est correcte, elle est équivalente à :

cat ./machin.txt ./répertoire/truc.txt ./etc.txt > total.txt


Jouer sous Debian ? Facile !

Ceterum censeo Barum esse delendam

Hors ligne

#8 03-07-2023 10:58:49

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : cmd 'cat' : concaténation de fichiers dans des sous-dossiers

ah ok
et du coup c'est le + à la fin qui induit ce comportement? a ba non en faite
ok c'est bon a savoir la redirection ne se fait qu'une fois

edit : y'a un espace en trop

- name

Dernière modification par Croutons (03-07-2023 11:17:17)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

En ligne

#9 03-07-2023 15:46:55

vv222
Administrateur
Lieu : Bretagne
Distrib. : Debian Sid
(G)UI : sway
Inscription : 18-11-2013
Site Web

Re : cmd 'cat' : concaténation de fichiers dans des sous-dossiers

Croutons a écrit :

et du coup c'est le + à la fin qui induit ce comportement?



Pour l’explication du + :

  • find . (…) -exec commande {} + se traduit en commande ./fichier1 ./fichier2 ./fichier3

  • find . (…) -exec commande {} \; se traduit en commande ./fichier1 ; commande ./fichier2 ; commande ./fichier3


Jouer sous Debian ? Facile !

Ceterum censeo Barum esse delendam

Hors ligne

#10 03-07-2023 19:02:38

raleur
Membre
Inscription : 03-10-2014

Re : cmd 'cat' : concaténation de fichiers dans des sous-dossiers

Croutons a écrit :

la redirection ne se fait qu'une fois


Le redirection ne se fait qu'une fois même avec ';' car elle s'applique à la commande find et non à chaque invocation de la commande spécifiée avec -exec.
Rappel : les redirections et substitutions sont effectuées par le shell avant d'exécuter toute commande.


Il vaut mieux montrer que raconter.

Hors ligne

Pied de page des forums