#1 Le 08/08/2020, à 17:46
- FalCT60
[Résolu] Lire les n premiers caractères d'un fichier
Bonsoir,
Je bute sur un problème sans doute anodin pour certains, de toute évidence parce que je m'y prends mal.
Je souhaite pouvoir tester les n premiers caractères d'un fichier, sans avoir besoin de charger ledit fichier dans son intégralité.
Parce qu'il peut tout aussi bien s'agir d'un binaire de plusieurs Gio, que d'un résidu de plantage...
Du coup, les méthodes basées sur la lecture de la première ligne ne sont pas forcément adaptées.
Quelles sont les commandes à utiliser pour parvenir à mes fins ?
Merci d'avance,
J.-Luc
Dernière modification par FalCT60 (Le 13/08/2020, à 19:53)
Hors ligne
#2 Le 08/08/2020, à 18:09
- Watael
Re : [Résolu] Lire les n premiers caractères d'un fichier
salut,
tu pourrais tester d'abord le type mime (avec file) du fichier...
Dernière modification par Watael (Le 08/08/2020, à 18:10)
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#3 Le 08/08/2020, à 18:59
- pingouinux
Re : [Résolu] Lire les n premiers caractères d'un fichier
Bonjour,
Pour lire les 25 premiers caractères, par exemple :
head -c 25 fichier | hd
Hors ligne
#4 Le 08/08/2020, à 19:03
- kamaris
Re : [Résolu] Lire les n premiers caractères d'un fichier
Qu'est ce que tu entends par « tester les n premiers caractères d'un fichier » ?
En première approche, tu peux regarder ce que te renvoie
hexdump -Cn N fichier
où N est le nombre d'octets de fichier à afficher (cf. man hexdump).
Hors ligne
#5 Le 08/08/2020, à 19:04
- gigiair
Re : [Résolu] Lire les n premiers caractères d'un fichier
S'il ne s'agit pas d'un fichier de texte, ça risque de ne pas être d'un très grand intérêt.
--
JJR.
Hors ligne
#6 Le 08/08/2020, à 21:13
- FalCT60
Re : [Résolu] Lire les n premiers caractères d'un fichier
Ah ! mauvaise compréhension de ma part ? La commande head peut donc faire l'affaire...
Je ne sais pourquoi, j'avais compris qu'il fallait indiquer une ligne, puis effectuer le test sur cette même ligne.
Du coup, je me prenais la tête pour rien ?
Je vais tenter de mettre ça en pratique, puis je reviendrai par ici.
Merci, à+
Hors ligne
#7 Le 10/08/2020, à 16:56
- FalCT60
Re : [Résolu] Lire les n premiers caractères d'un fichier
Bien, bien... j'ai quelque peu avancé dans ma quête.
J'explore une arborescence et lis chaque fichier dans la variable f - j'aurais pu choisir autre chose.
Puis, j'affiche le chemin du fichier, ainsi que le résultat de la commande head. Première étape, afin de me prémunir de surprises.
Cela donne (j'aime bien la commande find) :
find -iname '*.jpg' -type f -print0 | while read -r -d '' 'f'
do
printf '%s;%s\n' "$f" "$(head -c 4 "$f")" >> sortie_texte
done
Le comportement avec les noms de fichiers contenant des espaces ou des virgules m'a obligé à protéger le $f de la commande head, et j'ai toujours des comportements étranges lorsque les premiers octets sont des zéros ou des caractères exotiques, mais ça commence à prendre tournure.
Seul bémol, j'aurais bien aimé pouvoir tester deux types de fichiers en particulier, mais la commande
find \(-iname '*.jpg' -o -iname '*.tif'\) -type f -print0 ...
m'envoie sur les roses. C'est pourtant pris dans les exemples de la commande find.
Hors ligne
#8 Le 10/08/2020, à 17:21
- pingouinux
Re : [Résolu] Lire les n premiers caractères d'un fichier
Il manque des espaces.
find \( -iname '*.jpg' -o -iname '*.tif' \) -type f -print0 ...
Hors ligne
#9 Le 13/08/2020, à 19:53
- FalCT60
Re : [Résolu] Lire les n premiers caractères d'un fichier
Mais quelle andouille, de n'y avoir pas pensé !
Merci beaucoup.
Hors ligne