Omettre la première ligne de toute sortie de commande Linux

167

J'ai une exigence où je voudrais omettre la 1ère ligne de la sortie de ls -latr "some path"Depuis que je dois supprimer total 136de la sortie ci-dessous

entrez la description de l'image ici

J'ai donc écrit ls -latr /home/kjatin1/DT_901_linux//autoInclude/system | tail -qce qui excluait la 1ère ligne, mais lorsque le dossier est vide, il ne l'oublie pas. Veuillez me dire comment omettre la 1ère ligne dans n'importe quelle sortie de commande linux

AabinGunz
la source

Réponses:

185

Dirigez-le vers awk:

awk '{if(NR>1)print}'

ou sed

sed -n '1!p'
Fredrik Pihl
la source
21
ouawk 'NR>1'
mitchus
24
aussised '1d'
JoL
261

Le tailprogramme peut faire ceci:

ls -lart | tail -n +2

Les -n +2moyens «commencent à passer sur la deuxième ligne de sortie».

Boursiers Donal
la source
1
Notez que certaines tailimplémentations nécessitent le -ndrapeau pour cela, comme danstail -n +2
Mat
Vous pouvez également utiliser find . -name . -o -ls -prune, mais cela produit une sortie quelque peu différente.
Donal Fellows
@Mat: Il semble donc que cela a fonctionné sans quand j'ai essayé (sous OSX).
Donal Fellows
il fonctionnait avec coreutilstail, mais il a été abandonné, puis supprimé. Vous obtenez maintenant tail: cannot open '+2' for reading: No such file or directory(coreutils 8.7). La chose triste est que les autres implémentations n'acceptent pas -n...
Mat
4
@Mat: Certains en ont besoin, d'autres ne le prendront pas? Pouah! Ugh ugh ugh ugh! C'est dégoutant.
Donal Fellows
23
ls -lart | tail -n +2 #argument means starting with line 2
Jeff Ferland
la source
20

Ceci est un moyen rapide aki: ls -lart | grep -v ^total.

En gros, supprimez toutes les lignes commençant par "total", qui en lssortie ne doit être que la première ligne.

Une manière plus générale (pour tout):

ls -lart | sed "1 d"

sed "1 d" signifie seulement tout imprimer sauf la première ligne.

wkl
la source
3
Utiliser greppour filtrer pour cette tâche est dangereux en général; cela pourrait correspondre à des choses de manière inattendue.
Donal Fellows
Parfois oui, et je pense que ce n'est pas la meilleure solution ... mais cette commande ls mène toujours des entrées avec les permissions de répertoire. Ce n'est pas idéal car grep continue de vérifier chaque ligne, et ls se comporte différemment avec les autres indicateurs.
Jeff Ferland le
1
ce n'est que de la sémantique, mais techniquement, cela signifie supprimer la première ligne du flux.
John Morales
mieux espérer que vous n'avez pas de fichier avec le total dans son nom que vous voulez savoir
Amias