Forum Programmation.shell commande ls amélioré

Posté par  .
Étiquettes :
1
19
juil.
2012

Bonjour, je voudrais afficher certaines infos via la commande ls

actuellement je fais ceci:

ls -lotr /Data/FIC*20120718* >$HOME/fic.list

et j'obtiens ceci comme résultat:

-rw-r----- 1 webadm 168 Jul 18 01:00 /Data/FIC_20120718_0100.csv
-rw-r----- 1 webadm 168 Jul 18 02:00 /Data/FIC_20120718_0200.csv
-rw-r----- 1 webadm 168 Jul 18 03:00 /Data/FICDATA_20120718_0300.csv

ce que je voudrais c'est juste afficher ceci

01:00 /Data/FIC_20120718_0100.csv
02:00 /Data/FIC_20120718_0200.csv
03:00 /Data/FICDATA_20120718_0300.csv

  • # awk

    Posté par  (site web personnel) . Évalué à 7.

    Regarde les tutoriels concernant awk.

    Tu vas aimer.

    Bonne soirée
    G

    Pourquoi bloquer la publicité et les traqueurs : https://greboca.com/Pourquoi-bloquer-la-publicite-et-les-traqueurs.html

  • # cut

    Posté par  . Évalué à 1.

    Plus simple:
    ls -lotr /Data/FIC20120718 >$HOME/fic.list|cut -d" " -f7-8

    • [^] # Re: cut

      Posté par  . Évalué à 1.

      Chez moi, ça ne fonctionne pas en laissant la redirection vers le fichier de resultat.

      Ceci doit fonctionner par contre:

      ls -lotr /Data/FIC20120718 |cut -d" " -f7-8  >$HOME/fic.list
      
      
      • [^] # Re: cut

        Posté par  . Évalué à 3.

        Non ça ne marche pas non plus ou alors seulement par hasard.
        En fait, le cut -d" " considère chaque espace comme un séparateur. Donc, en fonction de la taille de certains champs (propriétaire et taille du fichier en particulier), le cut ne revoie pas le même résultat pour chaque ligne.
        Tu peux régler ce problème en réduisant plusieurs espaces consécutifs à un seul avec
        tr -s " " " "
        En jouant un peu sur les options de ls tu pourrais avoir quelque chose de ce genre-là :

        /bin/ls -otr --time-style='+%H:%M' | tr -s " " " " | cut -d " " -f 5-

        Mais bon, tu perds l'information du jour dans la date (mais ça semble te convenir).

        Sinon, avec awk tu aurais quelque chose comme ça :

        /bin/ls -otr --time-style='+%H:%M' | awk '{print $5 " " $6}'

        À toi d'adapter tout cela à tes besoins.

      • [^] # Re: cut

        Posté par  . Évalué à 4. Dernière modification le 19 juillet 2012 à 18:36.

        ls -lotr | cut -b 31- ?

        ou encore (avec le temps en s depuis l'Epoch) :
        stat -c "%Y %n" *

  • # find

    Posté par  (site web personnel) . Évalué à 10.

    $ find -mindepth 1 -maxdepth 1 -printf '%TH:%TM %f\n'
    22:03 Rocco_and_Jenna.mpeg
    20:03 clara_morgan_infidele.avi
    21:55 Barbie_belle_and_rocco.mpg
    22:02 Rocco_in_Sweden.mpg
    20:08 clara_morgane_piscine.avi
    
    

    pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.