J'essaie d'obtenir le fichier de la date actuelle avec la commande suivante sous HP-UX Unix :
$ ls -lrt ABC.LOG* |grep "`date +"%b %d"`"
Mais, ça me donne l'erreur :
ksh: : cannot execute
grep: can't open %d
Des suggestions ?
Réponse acceptée :
L'erreur provient de la citation des arguments de grep
et le fait que les backticks ne s'imbriquent pas très bien :
grep "`date +"%b %d"`"
C'est mieux écrit comme
grep "`date +'%b %d'`"
… ou encore mieux,
grep "$(date +'%b %d')"
En fait, avec $(...)
au lieu de backticks, vous devriez pouvoir conserver les guillemets intérieurs :
grep "$(date +"%b %d")"
Une alternative à grep la sortie de ls
serait à faire
find . -type f -name "ABC.LOG*" -ctime -1
Cela trouverait tous les fichiers normaux (-type f
) dans le répertoire courant dont les noms correspondent au modèle donné et dont ctime est moins de 24 heures depuis l'heure courante . Le ctime d'un fichier est l'heure à laquelle la dernière modification des données ou des métadonnées du fichier a été effectuée.
Ce n'est pas exactement l'équivalent de ce que vous essayez d'atteindre. Cela revient également dans les sous-répertoires.