A saída de ls
depende do ambiente LANG
. De info ls
:
By default, file timestamps are listed in abbreviated form. Most locales use a timestamp like
2002-03-30 23:45'. However, the default POSIX locale uses a date like
Mar 30 2002' for non-recent timestamps, and a date-without-year and time like 'Mar 30 23:45' for recent timestamps.
Compare estas duas variantes:
$ LANG=C ls -log
total 0
-rw-r--r-- 1 0 Sep 10 10:34 file1
-rw-r--r-- 1 0 Sep 10 10:34 file2
-rw-r--r-- 1 0 Sep 10 10:34 file3
-rw-r--r-- 1 0 Sep 10 10:34 file4
$ LANG=en_US.utf8 ls -log
total 0
-rw-r--r-- 1 0 2013-09-10 10:34 file1
-rw-r--r-- 1 0 2013-09-10 10:34 file2
-rw-r--r-- 1 0 2013-09-10 10:34 file3
-rw-r--r-- 1 0 2013-09-10 10:34 file4
Mas, como sempre, é uma idéia ruim analisar a saída de ls
, porque - como você tem visto - quebra facilmente. Considere usar stat
for file in *; do
stat -c "%n,%z;" "$file"
done
onde você pode especificar qual registro de data e hora deseja mais precisamente:
%x Time of last access
%y Time of last modification
%z Time of last change
E você não precisa mais awk
também.