Если под отметкой даты и времени вы имеете в виду время модификации файла, с помощью zsh
вы можете сделать:
zmodload zsh/stat
autoload zmv
zmv -n '(*_*_)*(.txt)' '$1$(zstat -F %FT%T%z +mtime -- $f)$2'
(удалить -n
для фактического переименования)
Обратите внимание, что для тех файлов .txt
, которые являются символическими ссылками, отметка времени основана на времени модификации цели символической ссылки, а не самой символической ссылки. Добавьте параметр -L
в zstat
, чтобы вместо этого использовать время модификации самой символической ссылки.
% FT% T% z
дает однозначную метку местного времени, например 2016-09-13T17: 32: 17 + 0100
. Вы можете приспособиться к своим потребностям, используя стандартный формат strftime ()
(такой же, как и с date +
). Однако обратите внимание, что zsh
zstat
не поддерживает субсекундную точность (для файловых систем, которые хранят время модификации с субсекундной точностью).
Если в системе GNU, вы можете использовать GNU date -r
вместо zstat
, чтобы получить эти наносекунды:
$ zmv -n '(*_*_)*(.txt)' '$1$(date -r $f +%FT%T.%N%z)$2'
mv -- Abc_192.168.1.164_001.txt Abc_192.168.1.164_2016-09-13T17:32:17.368805094+0100.txt
Как для zstat
, что занимает время модификации цели символических ссылок, а не самой символической ссылки. date
не имеет возможности использовать mtime символической ссылки, хотя вместо этого вы можете использовать GNU find
.