我在一个文件夹中有多个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命令列表:http://www.staff.uni-giessen.de/~gcg7/unix_help/aix_commands
答案 0 :(得分:0)
您可以使用/ 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
答案 1 :(得分:0)
这应该有效。我在echo
之前离开mv
。如果它删除它
似乎做你想要的。 (未在aix上测试)
for file in *.csv
do
time=$(istat "$file" | awk '
BEGIN{ split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec",imth," ");
for(m in imth)month[imth[m]] = m
}
/Last modified/{ m=$4; d=$5; t=$6; y=$7
printf "%s-%02d-%02d %s\n",y,month[m],d,t
}')
echo mv "$file" "$time $file"
done