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. Modérateur
    Salut,

    Et quelles sont les pistes que tu as commencé à explorer ???
    Qu'as-tu essayé de faire pour le moment ?
    0
    1. 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)
      0
      1. rien justement je pars avec des base nul c'est ça qui me desole
        0
        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é ;-((
          0
      2. 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...
        0
        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é ;-((
          0
          1. Salut,
            Commence déjà par faire "man find" tu trouveras ton bonheur avec cette commande pour rechercher tes fichiers.
            0
            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
              0
              1. Modérateur
                Essaie ça :

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

                0
                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
                  0
                  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
                    0
                    1. 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
                      0
                      1. #!/bin/bash

                        var=find . -type f -mtime 15 - print | sort
                        echo " les fichiers sont $var"
                        0
                        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...
                          0
                      2. 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
                        0
                        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
                          0
                      3. voila ce que ça donne en sortie standard :

                        sort : echec d'ouverture : +6: aucun fichier ou repertoire de ce type
                        0
                        1. Modérateur
                          Alors affiche ce que renvoie (depuis le répertoire où tu dois lancer ta recherche):

                          find . -type f -mtime +15 -ls
                          0
                          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)
                            0
                            1. 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 ?
                              0
                              1. tu parles de la commande find . -type f -mtime +15 -ls > fichier.txt ?
                                0
                                1. Modérateur
                                  Oui et même sans la redirection dans le fichier...
                                  0
                              2. 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/
                                0
                                1. Modérateur
                                  Ta sortie est vraiment comme ça ? Sur 2 lignes ?
                                  0