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

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
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
zipe31 Messages postés 38797 Statut Contributeur 6 433
 
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
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
ryko1820 Messages postés 1677 Date d'inscription   Statut Membre Dernière intervention   276
 
Pourquoi pas un

ls -lt NE5300IZ*
ou

ls -ltr NE5300IZ*
?

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