Caractère non valide dans la spécification de date / heure

exemple de code:

modified_time=`ls -lt core* | head -1 | awk '{print $6,$7,$8}'` echo modified time = $modified_time 

J’essaie de convertir l’heure de la dernière modification d’un fichier en quelques secondes à l’aide de la commande ci-dessous sur aix box

 t2=`date +'%s' -d "$modified_time"` echo t2 = $t2 

Note: le code que j’ai posté fonctionne sur cygwin sur bash. Cependant, son erreur de donner sous AIX (ksh). Je me retrouve sous l’erreur:

 egdev04{stc}[/home/stc]% t2=`date +'%s' -d "$modified_time"` Invalid character in date/time specification. Usage: date [-u] [+Field Descriptors] 

Quelqu’un pourrait-il s’il vous plaît me faire savoir quelle partie du code est incorrecte et suggérer ce qui doit être utilisé à la place.

Malheureusement, la date(1) est vraiment peu couverte par les normes, en particulier sur les systèmes date(1) , tels que AIX (sans jeu de mots).

Même sur les systèmes GNU / Linux et BSD modernes, il existe différentes clés pour obtenir le comportement que vous essayez d’invoquer:

  • La date GNU a une clé:

     -d, --date=STRING display time described by STRING, not 'now' 
  • La date de BSD utiliserait deux clés et une invocation spéciale:

     date [-jnRu] -f input_fmt new_date [+output_fmt] -j Do not try to set the date. This allows you to use the -f flag in addition to the + option to convert one date format to another. -f Use input_fmt as the format ssortingng to parse the new_date provided rather than using the default [[[[[cc]yy]mm]dd]HH]MM[.ss] format. Parsing is done using strptime(3). 

AIX ne semble pas inclure l’une de ces fonctionnalités. Donc, finalement, si vous avez vraiment besoin de cela, vous devrez exécuter un micro-script dans un langage de script tel que Perl / Ruby / Python / etc.

Faire un pas en arrière, parsingr les résultats de ls(1) est toujours une très mauvaise idée, car ils ont tendance à varier énormément en fonction de l’implémentation du système d’exploitation, des parameters régionaux, du format de sortie, des parameters par défaut, etc. pour obtenir du temps de modification de fichier, pourquoi n’utilisez-vous pas stat(1) ? Peut-être est-il disponible sous AIX? Quelque chose comme

 stat -c '%Y' "$file" 

semble résoudre votre tâche.