J’ai un répertoire avec des fichiers comme celui-ci:
one.xml two.xml three.xml
etc.
Je veux ouvrir / lire tous les fichiers et enregistrer des valeurs dans un nouveau fichier (par exemple new.txt
)
Le résultat dans le nouveau new.txt
devrait être (nom de fichier / valeur de la première ligne):
one value of first line two value of first line three value of first line
etc.
Vous pouvez obtenir la première ligne en utilisant head
. Les éléments suivants devraient fonctionner:
for i in *.xml; do echo -n "$(basename "$i" ".xml") "; head -1 "$i" ; done >> new.txt
sed peut le faire très bien, avec un petit coup de pouce de find:
find . -maxdepth 1 -type f -name "*.xml" -exec sed -n 1p "{}" ";"
(YMMV en ce qui concerne la citation des arguments à exec).
Ce qui est fait, c’est d’utiliser 1p
pour imprimer la première ligne de chaque fichier et combiner cela avec -n
qui supprime la sortie normale, ce qui dans ce cas serait d’imprimer chaque ligne du fichier.