J'ai utilisé une commande find qui crache une liste de fichiers qui inclut une chaîne donnée en faisant

find /dir -name cat

Et je suis capable d'imprimer le contenu en ajoutant -exec cat {} à la fin

Cependant, je voulais pouvoir ajouter un titre avant chaque fichier pour les séparer c'est-à-dire

***** chemin/fichier ***** pour qu'il s'imprime

*****dir/cat.txt*****
some text
*****dir/cat2.txt*****
some text

Y a-t-il un moyen de faire cela? Aussi, si je voulais n'afficher que le contenu d'un seul fichier, qui est obtenu par la commande find, c'est-à-dire

find [path] -name [string] | head -1

Et l'ajout de -exec cat n'est pas possible. comment je ferais ça ?

Je vous remercie

0
Cencoroll 31 janv. 2020 à 01:18

1 réponse

Meilleure réponse

La commande find peut prendre plusieurs paramètres -exec et exécutera chacun pour chaque fichier.

Vous pouvez donc utiliser:

find . -name \*.txt -exec echo "***** {} *****" \; -exec cat {} \;

Et pour la nouvelle deuxième partie de votre question :

find . -name \*.txt -exec echo "***** {} *****" \; -exec cat {} \; -quit

2
squaregoldfish 30 janv. 2020 à 22:31