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
脚本测试结果: