OVH Cloud OVH Cloud

[Bash] - un cut sur un ls -al

12 réponses
Avatar
Sebas
Bonjour,
le résultat de la commande 'ls -al' retourne un résultat avec pour
délimiteur de colonnes "n espaces". Je ne peux donc pas appliquer un filtre
"cut" à moins de compter les colonnes (beurk).
Existe t il un moyen de forcer la commande à retourner un délimiteur de type
colonne ?

Merci.

10 réponses

1 2
Avatar
gUI
le résultat de la commande 'ls -al' retourne un résultat avec
pour délimiteur de colonnes "n espaces".


pour ce style de truc, j'aime bien utiliser awk.

ls -l | awk '{print $1}' affichera la premiere colone (il va se demerder
pour couper ce qu'il faut)

ls -l | awk '{print $2}' affichera la 2e colonne et ainsi de suite...

gUI

Avatar
TiChou
Dans le message <news:4145372a$0$21764$,
*Sebas* tapota sur f.c.o.l.configuration :

Bonjour,


Bonjour,

le résultat de la commande 'ls -al' retourne un résultat avec pour
délimiteur de colonnes "n espaces". Je ne peux donc pas appliquer un
filtre "cut" à moins de compter les colonnes (beurk).
Existe t il un moyen de forcer la commande à retourner un délimiteur de
type colonne ?


En complément de la réponse qui vous a été donné, je serais curieux de
savoir quelles informations vous cherchez à récupérer dans la sortie de la
commande 'ls -al' car je suis certain que l'on pourrait obtenir la même
chose en une seule commande. :)

--
TiChou

Avatar
franck blanchard
Dans le message <news:4145372a$0$21764$,
*Sebas* tapota sur f.c.o.l.configuration :


Bonjour,



Bonjour,


le résultat de la commande 'ls -al' retourne un résultat avec pour
délimiteur de colonnes "n espaces". Je ne peux donc pas appliquer un
filtre "cut" à moins de compter les colonnes (beurk).
Existe t il un moyen de forcer la commande à retourner un délimiteur de
type colonne ?



En complément de la réponse qui vous a été donné, je serais curieux de
savoir quelles informations vous cherchez à récupérer dans la sortie de la
commande 'ls -al' car je suis certain que l'on pourrait obtenir la même
chose en une seule commande. :)

salut

tu peux faire
ls -al | awk '{print $1}'
cela extraira la premiere colonne.
Remplace le 1 par le chiffre de la colonne que tu veux extraire.
Maintenant si a la place des espace tu veux inserer un délimiteur tu
peux toujours faire ceci:
ls -al | awk '{print $1":"$2":"$3}'

au plaisir


Avatar
TiChou
Dans le message <news:6Oq1d.28903$,
*franck blanchard* tapota sur f.c.o.l.configuration :

*Sebas* tapota sur f.c.o.l.configuration :
le résultat de la commande 'ls -al' retourne un résultat avec pour
délimiteur de colonnes "n espaces". Je ne peux donc pas appliquer un
filtre "cut" à moins de compter les colonnes (beurk).
Existe t il un moyen de forcer la commande à retourner un délimiteur de
type colonne ?


En complément de la réponse qui vous a été donné, je serais curieux de
savoir quelles informations vous cherchez à récupérer dans la sortie de
la commande 'ls -al' car je suis certain que l'on pourrait obtenir la
même chose en une seule commande. :)


tu peux faire
ls -al | awk '{print $1}'
cela extraira la premiere colonne.
Remplace le 1 par le chiffre de la colonne que tu veux extraire.
Maintenant si a la place des espace tu veux inserer un délimiteur tu
peux toujours faire ceci:
ls -al | awk '{print $1":"$2":"$3}'


Désolé de revenir à la charge :), mais je qualifierai ce genre de méthode de
« UUoC ».

La commande 'ls' est une interface utilisateur, pas une commande de
scripting et ne devrait pas servir à extraire des informations sur des
fichiers surtout que la commande 'ls' peut se comporter différemment selon
son environnement (type de terminal, locale, date, alias) et donc afficher
les informations différemment.

Si on souhaite obtenir des informations sur des fichiers pour les traiter
par la suite, il y a généralement des commandes toutes faites pour ça, comme
par exemple la commande 'stat'.

--
TiChou



Avatar
carnetress
TiChou wrote:
Dans le message <news:6Oq1d.28903$,
*franck blanchard* tapota sur f.c.o.l.configuration :


*Sebas* tapota sur f.c.o.l.configuration :

le résultat de la commande 'ls -al' retourne un résultat avec pour
délimiteur de colonnes "n espaces". Je ne peux donc pas appliquer un
filtre "cut" à moins de compter les colonnes (beurk).
Existe t il un moyen de forcer la commande à retourner un délimiteur de
type colonne ?


En complément de la réponse qui vous a été donné, je serais curieux de
savoir quelles informations vous cherchez à récupérer dans la sortie de
la commande 'ls -al' car je suis certain que l'on pourrait obtenir la
même chose en une seule commande. :)




tu peux faire
ls -al | awk '{print $1}'
cela extraira la premiere colonne.
Remplace le 1 par le chiffre de la colonne que tu veux extraire.
Maintenant si a la place des espace tu veux inserer un délimiteur tu
peux toujours faire ceci:
ls -al | awk '{print $1":"$2":"$3}'



Désolé de revenir à la charge :), mais je qualifierai ce genre de méthode de
« UUoC ».

La commande 'ls' est une interface utilisateur, pas une commande de
scripting et ne devrait pas servir à extraire des informations sur des
fichiers surtout que la commande 'ls' peut se comporter différemment selon
son environnement (type de terminal, locale, date, alias) et donc afficher
les informations différemment.

Si on souhaite obtenir des informations sur des fichiers pour les traiter
par la suite, il y a généralement des commandes toutes faites pour ça, comme
par exemple la commande 'stat'.



IL faudrait utiliser la documentation Unix qui éxiste depuis 30 ans
la commande est *man commande*
tu verras que le *man ls* te fournit toutes les réponses: en l'occurence
une autre commande "vdir" ;-) qui peut correspondre à ton problème.
A+




Avatar
Nicolas George
carnetress wrote in message <41486a3c$0$25698$:
tu verras que le *man ls* te fournit toutes les réponses: en l'occurence
une autre commande "vdir" ;-) qui peut correspondre à ton problème.


~ $ man ls | grep vdir
Reformatting ls(1), please wait...
zsh: done man ls |
zsh: exit 1 grep vdir

Hum...

~ $ man ls | col -b | grep vdir
Reformatting ls(1), please wait...
zsh: done man ls | col -b |
zsh: exit 1 grep vdir

Non, vraiment pas.

~ $ sus vdir
vdir: nothing appropriate.
zsh: exit 1

(NDLR : sus est un script qui va consulter la Single Unix Specification)
Vraiment vraiment pas.

Avatar
Hugues
Ce cher Nicolas George <nicolas$ a dit :


~ $ sus vdir
vdir: nothing appropriate.
zsh: exit 1

(NDLR : sus est un script qui va consulter la Single Unix Specification)
Vraiment vraiment pas.


Wouhou, c'est quoi ca ?
Ca m'interesse, je le trouve pas dans mes packages debian :)

--
Hugues Hiegel, EPITA 2004 - Linux/Systèmes embarqués

Avatar
TiChou
Dans le message <news:41486a3c$0$25698$,
*carnetress* tapota sur f.c.o.l.configuration :

IL faudrait utiliser la documentation Unix qui éxiste depuis 30 ans
la commande est *man commande*


Mais de quoi parlez vous ? Le rapport avec la discussion précédente ?

tu verras que le *man ls* te fournit toutes les réponses: en l'occurence
une autre commande "vdir" ;-) qui peut correspondre à ton problème.


Mais je n'ai aucun problème. A qui parlez-vous ?

Et en quoi la commande 'vdir' va changer quelque chose ? Ça n'est qu'un
simple alias vers la commande 'ls -lb'...

Bref, avez-vous lu le fil ? Avez-vous vu a qui vous répondiez ?

--
TiChou

Avatar
Nicolas George
Hugues wrote in message :
Wouhou, c'est quoi ca ?


<URL: http://www.unix.org/version3/online.html >

Avatar
carnetress
Nicolas George wrote:
carnetress wrote in message <41486a3c$0$25698$:

tu verras que le *man ls* te fournit toutes les réponses: en l'occurence
une autre commande "vdir" ;-) qui peut correspondre à ton problème.



~ $ man ls | grep vdir
Reformatting ls(1), please wait...
zsh: done man ls |
zsh: exit 1 grep vdir

Hum...

~ $ man ls | col -b | grep vdir
Reformatting ls(1), please wait...
zsh: done man ls | col -b |
zsh: exit 1 grep vdir

Non, vraiment pas.

~ $ sus vdir
vdir: nothing appropriate.
zsh: exit 1

(NDLR : sus est un script qui va consulter la Single Unix Specification)
Vraiment vraiment pas.


vous etes vraiment compliqué : *man ls affiche*
( sous mandrake 10.0 (man en francais of course)

<man ls >
OM
ls, dir, vdir - Afficher le contenu d'un répertoire.

SYNOPSIS
ls [options] [fichier...]
dir [fichier...]
vdir [fichier...]

Options POSIX : [-CFRacdilqrtu1] [--]
</man ls>


et si l'on tape "vdir /tmp"
vdir /tmp
total 4
drwx------ 3 gres gres 60 sep 16 08:44 gconfd-gres
drwxr-xr-x 2 gres gres 60 sep 16 09:31 hsperfdata_gres
srwxrwxr-x 1 gres gres 0 sep 16 09:31 jpsock.142_03.3261
drwx------ 2 gres gres 40 sep 16 08:45 kde-gres
drwx------ 2 gres gres 140 sep 16 09:02 ksocket-gres
drwx------ 3 gres gres 220 sep 16 08:45 mcop-gres
-rw-r--r-- 1 root root 62 sep 16 08:44 pdf.log

etc


on a donc un affichage parfaitement calibre pour filtrer les infos

A+


1 2