Ll: not found

Résolu
volcomboy62 -  
 volcomboy62 -
Bonjour,

J'essaie d'executer une commande dans un script .sh et j'ai une erreur :
ll : not found
cp: fichier cible manquant

la commande en question : (qui fonctionne sous unix)
cp 'll | grep 'NE5200IZ*' | sort -r | head -1 | cut -d ' ' -f 12' ../../Interface/AFI/fichierAFI/10072013

Je ne comprend pas pourquoi cette commande ne fonctionne pas dans mon script alors qu'elle fonctionne sous unix ....

Pouvez-vous m'aider ?

2 réponses

  1. Flachy Joe Messages postés 2303 Statut Membre 261
     
    Salut,
    ll est un alias courant pour ls -l, et cet alias n'est pas défini pour le système/l'utilisateur avec lequel tu lances la commande.
    Par ailleurs, il est conseiller d'utiliser la syntaxe $(...) pour récupérer le résultat d'une commande, plutôt que les guillemets simples inversés (question de lisibilité avant tout).
    Ta commande peut donc être réécrite
    cp $(ls -l | grep 'NE5200IZ*' | sort -r | head -1 | cut -d ' ' -f 12) ../../Interface/AFI/fichierAFI/10072013

    Bonne continuation.
    0
  2. volcomboy62
     
    Merci cela fonctionne, par contre j'ai un autre soucis.

    avec cette commande : ls -l | grep 'NE5300IZ*' | sort -r
    j'essai de trier par date inversé et cela ne semble pas fonctionner.
    En faite il a l'air de faire deux tri :
    - un sur les dates avec les jours sur un caractère
    - et un sur les dates avec les jours sur deux caractères. étrange ...

    -rw-rw-r-- 1 hrdev hr 2397410 jui 9 10:46 NE5300IZ.2755
    -rw-rw-r-- 1 hrdev hr 2397410 jui 9 08:36 NE5300IZ.30722
    -rw-rw-r-- 1 hrdev hr 2397410 jui 8 16:17 NE5300IZ.3236
    -rw-rw-r-- 1 hrdev hr 2397410 jui 8 16:17 NE5300IZ.2990
    -rw-rw-r-- 1 hrdev hr 2397410 jui 8 15:47 NE5300IZ.1997
    -rw-rw-r-- 1 hrdev hr 2397410 jui 10 16:47 NE5300IZ.22611
    -rw-rw-r-- 1 hrdev hr 2397142 jun 12 15:30 NE5300IZ.32735

    Avez-vous une explication ?
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Salut,

      Parce qu'il faut donner à "sort" le champ à trier (par défaut c'est le 1er qu'il trouve)...

      Sinon la commande "ls" a aussi une option pour trier selon la date...
      0
    2. volcomboy62
       
      dans ce cas là comment faire pour chercher le fichier le plus récent contenant le nom "NE5200IE*" et ne récupérer que le plus récent ?
      dans ce cas présent je doit normalement récupérer le fichier NE5300IZ.22611 car c'est le plus récent parmis la liste.
      0
    3. ryko1820 Messages postés 1633 Date d'inscription   Statut Membre Dernière intervention   310
       
      Pourquoi pas un

      ls -lt NE5300IZ*
      ou

      ls -ltr NE5300IZ*
      ?

      avec head ou tail ?
      0
    4. volcomboy62
       
      c'est sur quoi je suis parti : ls -t | grep 'NE5950IX*' | tail -1
      et sa à l'air de fonctioner ^^
      0
    5. ryko1820 Messages postés 1633 Date d'inscription   Statut Membre Dernière intervention   310
       
      C'est vrai que le -l (L) on s'en fiche ... Ca simplifie un peu la ligne initiale :p
      0