File 在文件名中写入上次修改的时间

File 在文件名中写入上次修改的时间,file,shell,unix,aix,last-modified,File,Shell,Unix,Aix,Last Modified,我在一个文件夹中有多个csv文件,我想将每个文件的上次修改时间添加到其文件名中 例如: Before -> After TEST_A.csv -> 2015-09-02 18:10:55 TEST_A.csv TEST_B.csv -> 2015-09-01 15:32:08 TEST_B.csv TEST_C.csv -> 2015-09-02 13:24:36 TEST_C.csv 如何通过Unix shell脚本实现这一点?

我在一个文件夹中有多个csv文件,我想将每个文件的上次修改时间添加到其文件名中

例如:

Before       ->   After
TEST_A.csv   ->   2015-09-02 18:10:55 TEST_A.csv
TEST_B.csv   ->   2015-09-01 15:32:08 TEST_B.csv
TEST_C.csv   ->   2015-09-02 13:24:36 TEST_C.csv
如何通过Unix shell脚本实现这一点? 问题是,我必须在“AIX操作系统”(Unix)上执行此操作,并且它不支持“stat”命令,因此必须使用
ls-l
命令执行此操作


我找到了一个AIX命令列表:

您可以使用/usr/bin/istat程序:

DT="$(/usr/bin/istat . | grep 'Last modified' | cut -f2)"
echo $DT
Thu Nov 29 16:50:10 2007
现在,如果您有GNU日期,您可以格式化它:

gdate -d "$DT" '+%Y-%m-%d %H:%M:%S'
2007-11-29 16:50:10
编辑:如果您有gfind,请使用它:

gfind /unix -maxdepth 0 -printf '%TY-%Tm-%Td %TH:%TM:%TS\n'
2013-06-05 16:24:00

您可以使用/usr/bin/istat程序:

DT="$(/usr/bin/istat . | grep 'Last modified' | cut -f2)"
echo $DT
Thu Nov 29 16:50:10 2007
现在,如果您有GNU日期,您可以格式化它:

gdate -d "$DT" '+%Y-%m-%d %H:%M:%S'
2007-11-29 16:50:10
编辑:如果您有gfind,请使用它:

gfind /unix -maxdepth 0 -printf '%TY-%Tm-%Td %TH:%TM:%TS\n'
2013-06-05 16:24:00

这应该行得通。我在
mv
之前的
echo中离开了。如果需要,请将其移除
似乎做你想做的事。(未在aix上测试)


这应该行得通。我在
mv
之前的
echo中离开了。如果需要,请将其移除
似乎做你想做的事。(未在aix上测试)


该列表只是一个任意列表,适用于AIX3.2。它不包括通常在AIX中可用的
sed
awk
。请查找您拥有的AIX版本,并在/bin和/usr/bin中列出命令的基本名称。该版本为6.1-sed,awk可用。该列表只是一个任意列表,适用于AIX3.2。它不包括通常在AIX中可用的
sed
awk
。请找到您拥有的AIX版本,并在/bin和/usr/bin中列出命令的基本名称。该版本为6.1-sed,awk可用。istat或gdate是AIX的标准配置(这是OP要求的);如果没有gdate格式,日期可能会很困难。当然,安装gfind是另一个好主意。无论如何,它都是重复的,正如前面提到的。“gfind”和“gdate”是我不能使用的命令:-(
istat TEST_a.csv | grep'Last modified'| cut-f2
效果很好。但是我如何格式化日期并将其放在文件名前面呢?istat和gdate都不是AIX的标准配置(这是OP询问的内容)。由于(至少)AIX5.2/usr/bin/istat是包bos.rte.filesystem的一部分;如果没有gdate格式,日期可能会很难设置。当然,安装gfind将是另一个好主意。如前所述,它是重复的。“gfind”和“gdate”是我无法使用的命令:-(
istat TEST_A.csv | grep'Last modified'| cut-f2
运行良好。但是如何格式化日期并将其放在文件名前面?