编写shell程序按后缀分类并找出时间最老的文件

linux编写shell程序,按照文件名后缀分类,找出每个类型里时间最老的文件分别是哪个?大家帮帮忙吧,新人不容易啊

第一步,ls -t | tac | grep 类型 | head -n 1,找到同类型的创建最早的文件。
ls -t 升序排序 ,head -n 1 取第一个。
第二步,逐一对执行 date +%s -r 目录名/文件名 获取文件的创建时间。
两个命令搞定。

获取文件类型并去重的脚本:

#进入指定目录
cd /xxx/xxx
#下标遍历
index=0
#收集文件后缀的数组
fileSuffix=()
#文件列表命令
fileTmp=`ls -t`
#执行命令获取所有的的文件名称
fileNames=($(echo $fileTmp))
#遍历所有的文件名称,截取最后一个文件后缀
for fileName in ${fileNames[@]}
do
 fileType=${fileName##*.}
 fileSuffix[$index]=$fileType
 let index++
done

echo total file $index

#使用 awk 对文件后缀数组去重
fileSuffix=($(awk -vRS=' ' '!a[$1]++' <<< ${fileSuffix[@]}))

#遍历最后去重后的后缀,执行获取文件时间的方法
for fileType in ${fileSuffix[@]}
do
  echo $fileType
  #TODO 获取最久的时间
done

脚本测试结果:

图片说明