GNU/Linux >> Tutoriels Linux >  >> Linux

Citations à l'intérieur Backticks Inside Quotes In Ksh?

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.


Linux
  1. Grep -v Comportement inattendu ?

  2. Vérifier qu'un script est en cours d'exécution ?

  3. Couper / Grep Et Df -h ?

  4. Commande grep Linux

  5. Utiliser grep contre awk

Grep Regex :un guide complet

Comment exclure dans Grep

Expressions régulières dans Grep (Regex)

Installation de Seafile 6.3.2 dans ISPConfig 3.1

Commande Grep sous Linux/UNIX

Comment grep \n dans le fichier