Script linux

Résolu
Bonjour a tous et a toutes,

étant un débutant sur linux, j'ai pour mission de creer un script qui me permettra :

- de lister tous les fichiers qui ont plus de 2 semaines
-de les classer par taille decroisante

le tout dans un fichier nommé resultat.txt dans home/syncro

pour info je suis en bts ig en alternance, et cette mission que je trouve déraisonnable compte tenu de mon niveau m'a été attribué par mon tuteur de stage

je compte sur vous pour me donner des tuyeaux

merci d'avance et bonnes fetes :)
Configuration: Windows XP
Firefox 2.0.0.20

20 réponses

Résumé de la discussion

Un débutant sous Linux cherche à créer un script qui liste les fichiers âgés de plus de deux semaines et les classe par taille décroissante, puis les écrit dans /home/syncro/resultat.txt. Plusieurs réponses proposent d'utiliser find pour sélectionner les fichiers avec -mtime +14 ou +15 et d'alterner avec sort pour trier par taille, avant d'acheminer le résultat vers le fichier visé. Des échanges évoquent des erreurs liées à la syntaxe de sort et à l'utilisation du champ de tri, ainsi que l'importance de rediriger correctement l'affichage vers le fichier cible. En pratique, il est recommandé d'expérimenter sur des répertoires tests et de vérifier le chemin exact du fichier resultat.txt.

Bobot (l’IA à votre service)
  1. mlocate
    24644 4 -rw-r--r-- 1root root 102 sep 28 2008./cron.daily/

    .placeholder
    24644 4 -rwxr--rr-x1root root 314 dec 5 2008./cron.daily/

    aptitude
    24954 4 -rwxr-xr-x 1root root 89 oct 8 2008./cron.daily/
    1. Modérateur
      Ta sortie est vraiment comme ça ? Sur 2 lignes ?
  2. tu parles de la commande find . -type f -mtime +15 -ls > fichier.txt ?
    1. Modérateur
      Oui et même sans la redirection dans le fichier...
  3. Modérateur
    Le fichier est sensé se trouver dans le répertoire d'où tu as lancé ton script...

    Tu peux afficher quelques lignes de ce que renvoie la commande, histoire qu'on voit pourquoi la commande "sort" te renvoie une erreur, s'il te plaît, merci ?
    1. aaaaaahhh la ça a l'air beaucoup mieux
      j'ai fait cette ligne de commande

      find . -type f -mtime +15 -ls > fichier.txt

      ça me la mis comme prévu dans le fichier txt
      maintenant le script a un peu de mal a le faire

      #!/bin/bash
      find . -type f -mtime +15 -ls > fichier.txt

      c'est pourtant pas mal ça

      a moins que je cherche mal le fichier (find fichier.txt)
      1. Modérateur
        Alors affiche ce que renvoie (depuis le répertoire où tu dois lancer ta recherche):

        find . -type f -mtime +15 -ls
        1. voila ce que ça donne en sortie standard :

          sort : echec d'ouverture : +6: aucun fichier ou repertoire de ce type
          1. jipicy si je met dans mon script qui devrai ressembler a ça :

            #!/bin/bash
            find . -type f -mtime +15 -ls | sort -nr +6 | awk '{ print $NF}'

            le script se lance certe mais le pb c ke je ne trouve pas mon fichier texte où sont listé tous ces fichiers :s
            1. Modérateur
              Est-ce qu'il y a quelque chose au moins sur la sortie standard ? (sortie standard=écran)

              Pour avoir le résultat dans un fichier :

              find . -type f -mtime +15 -ls | sort -nr +6 | awk '{ print $NF}'  > fichier.txt
          2. #!/bin/bash

            var=find . -type f -mtime 15 - print | sort
            echo " les fichiers sont $var"
            1. Modérateur
              Salut,

              Il manque rien à ta déclaration de variable ???
              Du style :

              var=$(commande...)


              Puis le sort se fera sur le nom des fichiers et non sur leur taille ;-((

              D'où le "-nr +6" dans la commande donnée plus haut...

              -nr pour trier sur les chiffres uniquement (n) et dans l'ordre inverse (r)
              +6 sur le 7 ème champ (on part de 0, champ1=0) en fonction du résultat de la commande "find ... -ls" en sortie.
              A adapter si besoin...
          3. jipicy ta commande m'a l'ai pas mal maid ya un truc que je pige pas notament " sort -nr +6"
            tu pourrez m'éclairer

            je vient de l'essayer il me met :
            echec d'ouverture +6 aucun fichhier

            et puis si il me manque la commande qui me permet de lister tous ces fichier dans "resultat.txt" dans le repertoire home/syncro
            1. je vais essayer ça mais avant je vais essayer de comprendre la ligne de commandes si non comme le dit chakroun ça sert a rien

              je vous tient au courant le temps que je comprenne un peu

              en tout cas messieurs merci d'avance de vos conseil et de votre aide
              1. Contributeur
                bonjour,
                Merci chakroun mais il me faut que ces fichiers entre dans le fichier txt en question 

                mais si tu ne commence pas par comprendre et etudie la commande qui va te permettre de creer ton script , ça va jamais le faire
                de la lecture
                http://www.c-sait.net/cours/scripts.php
                a apres ils vont dire que personne ne les aides
                a+
                ps: concernant les entreprises il y a des c...s partout faut jamais generaliser
                -
                FC 11 - Mandriva 2009 -Debian squeeze-
                Les meilleures choses ont besoin de patience.(JC ANGLADE)
                penser aux astuces https://www.commentcamarche.net/list
                1. Modérateur
                  Essaie ça :

                  find . -type f -mtime +15 -ls | sort -nr +6 | awk '{ print $NF}'

                  1. merci chakroun mais il me faut que ces fichiers entre dans le fichier txt en question

                    jipicy quand tu arrive dans une boite ou on tes collegue te parle comme un chien et en te faisant passé pour un pigeon , que les utils que tu voient tous les jours ne savent toujours pas te dire bonjour (j'ai fais des boites, et la politesse est primordial) ... je t'ai planté le décor sachant que je sais au combien j'ai galeré pour trouver une entreprise et que je peux pas la lacher car mon avenir dépend de leur savoir qu'ils doivent me transmettre.
                    je boulot que je fais j'essaie de le faire avec passion et professionnalisme mais on ne m'aide pas. Et je ne peux pas me plaindre a qui que ce soit.

                    bref je ne suis pas venu me plaindre mais il faut que j'avance sur ce script absolument
                    1. Salut,
                      Commence déjà par faire "man find" tu trouveras ton bonheur avec cette commande pour rechercher tes fichiers.
                      1. Modérateur
                        et cette mission que je trouve déraisonnable compte tenu de mon niveau m'a été attribué par mon tuteur de stage
                        [...]
                        vu que je dois assurer en meme tps le boulot que ces imbecils d'util me donnent...


                        Si tu pars dans le monde de travail avec ce genre d'à priori et cette mentalité, t'es pas arrivé ;-((
                        1. le truc c qu'on a pas commencé linux (janvier) pour l'instant les base que j'ai aquis sont via mon entreprise
                          c'est pas enorme mais c'est toujours ça
                          concernant mes recherches je fais que ça puis c'est difficile vu que je dois assurer en meme tps le boulot que ces imbecils d'util me donnent...
                          1. rien justement je pars avec des base nul c'est ça qui me desole
                            1. Modérateur
                              As-tu fait des recherches au moins ???

                              T'es en BTS info que tu dis et si tu n'as pas avancé d'un iota, à mon avis t'es mal barré ;-((
                          2. pour l'instant j'ai commencer a creer le script resultat.sh

                            je sais qu'au debut je dois mettre #!/bin/sh

                            j'ai oublié de preciser que j'utilise une machine virtuelle sous debian (shell)
                            1. Modérateur
                              Salut,

                              Et quelles sont les pistes que tu as commencé à explorer ???
                              Qu'as-tu essayé de faire pour le moment ?