122 votes

Équivalent de Windows de la commande 'tail'

Y a-t-il un moyen de simuler la commande *nix tail sur la ligne de commande Windows ? J'ai un fichier et je veux une manière de couper les premières n lignes de texte. Par exemple :

D:\>type file.txt
line one
line two
line three
D:\>*[appel à tail]* > result.txt

D:\>type result.txt
line two
line three

12 votes

Ne montre pas simplement les premières lignes n au lieu de les laisser de côté, le head ne fonctionne-t-il pas ainsi?

0 votes

S'il vous plaît Chris, considérez les nouvelles réponses depuis 2009, plus précisément la réponse d'Amit Portnoy. Comme votre question est générale, de nombreux utilisateurs peuvent trouver cette page web. Et ils peuvent arrêter de lire les réponses après la première : la réponse que vous avez acceptée. Vous pouvez changer la réponse que vous avez acceptée pour une autre plus récente et plus adaptée aux possibilités actuelles. Santé ;)

0 votes

Je suis un peu confus. La question initiale portait sur la commande Unix de style head, mais la sortie désirée semblait vouloir tail. Il semble que les réponses portent sur head et non sur tail.

125voto

Amit Portnoy Points 563

SI vous avez Windows PowerShell installé (je pense qu'il est inclus depuis XP) vous pouvez simplement exécuter depuis cmd.exe:

Commande Head:

powershell -command "& {Get-Content *nomdufichier* -TotalCount *n*}"

Commande Tail:

powershell -command "& {Get-Content *nomdufichier* | Select-Object -last *n*}"

ou, directement depuis PowerShell:

Get-Content *nomdufichier* -TotalCount *n*
Get-Content *nomdufichier* | Select-Object -last *n*

mise à jour

PowerShell 3.0 (Windows 8 et versions supérieures) a ajouté la commande Tail avec l'alias Last. Les alias Head et First pour TotalCount ont également été ajoutés.

Ainsi, les commandes peuvent être réécrites comme suit

Get-Content *nomdufichier* -Head *n*
Get-Content *nomdufichier* -Tail *n*

0 votes

Ne se comporte-t-il pas comme head plutôt que tail?

0 votes

@blakeoft oui, ça l'a fait... J'ai mis à jour ma réponse. C'est incroyable que cela ait pris 2 ans et 17 votes positifs avant que quelqu'un ne commente là-dessus.

1 votes

@blakeoft vient de réaliser que la question a été modifiée! (voir stackoverflow.com/posts/1295068/revisions). Elle demandait initialement la commande head... mise à jour pour inclure les deux réponses...

98voto

Matthew Nizol Points 1013

Pas d'équivalent exact. Cependant, il existe une commande DOS native "more" qui a une option +n qui commencera à afficher le fichier après la n-ième ligne :

Invite de commandes DOS :

C:\>more +2 myfile.txt

La commande ci-dessus affichera tout après les 2 premières lignes.
Il s'agit en fait de l'inverse de la commande Unix head :

Console Unix :

root@server:~$ head -2 myfile.txt

La commande ci-dessus ne va imprimer que les 2 premières lignes du fichier.

12 votes

Non, ce n'est pas la même chose. tail commence à compter à partir de la fin du fichier. Donc, tail -2 affichera les deux dernières lignes.

7 votes

Puis-je imprimer aussi les premiers caractères n ?

0 votes

@ADTC Ma version de tail ne prend pas en charge les négatifs. Seul head le fait (gnuwin32)

25voto

Dan Points 133
more /e nomfichier.txt P n

où n = le nombre de lignes à afficher. Fonctionne rapidement et est exactement comme la commande head.

17 votes

Les commandes telles que P, S, etc. ne peuvent être saisies que par l'utilisateur à l'invite. Elles ne peuvent pas être transmises à la commande more. Ainsi, l'exemple ci-dessus ne fonctionne pas.

18voto

Vous pourriez obtenir CoreUtils depuis GnuWin32, qui est une collection d'outils unix standard, portés sur Windows.

Il contient, entre autres, la commande head.

13voto

user2041301 Points 71

Ceci est vraiment un hack total mais si c'est un énorme fichier que vous voulez simplement examiner le format, l'en-tête, etc. et que vous cherchez une solution, vous pouvez toujours rediriger la sortie 'more' vers un nouveau fichier et appuyez rapidement sur CTRL-C. Les lignes de sortie ne peuvent pas être contrôlées de manière précise et vous risquez très probablement de l'interrompre au milieu d'une ligne de sortie mais c'est un moyen peu coûteux de récupérer un petit morceau d'un fichier autrement inutilisable.

Ex.

C:\\more test.csv > test.txt   
^C

C:\\more test.txt   
ligne 1  
ligne 2  
etc......

C:\\

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X