shell脚本获取主机上某个目录下的文件信息
最近要完成获取主机上某个目录下的文件信息的需求,因此写完后在这里记录一下,参考文章放在文末。大致步骤如下:
#!/bin/bash
###进入该目录,并将该目录下的文件信息循环遍历保存到数组中
cd "${path}"
for file in $(ls -p | grep -v /)
do
filelist[$c]=$file
((c++))
done
###判断数组是否为空,为空则说明该目录下没有文件
if [ ! -n "$filelist" ]; then
echo "IS NULL"
exit 1
fi
###组装需要输出的信息,每行输出内容从左到右依次是文件大小、文件时间、文件名,并在每个输出项之间加上分割符:@sss@
###删除前、后空格,不删除中间空格 sed -e 's/^[ \t]*//g' -e 's/[ \t]*$//g'
b=0
while [ $b -lt $c ]
do
fileTimeAndName=$(ls -l --time-style '+%Y%m%d%H%M%S'| awk '{$1="";$2="";$3="";$4="";print $0}'|grep ${filelist[$b]}|sed -e 's/^[ \t]*//g' -e 's/[ \t]*$//g'|sed -e 's/[ ][ ]*/@sss@/g')
filelist[$b]=${fileTimeAndName}
echo ${filelist[$b]}
((b++))
done
本地调试结果如下:
相关参考链接(排名不分先后):
shell判断一个变量是否为空方法总结_Linux_脚本之家 (jb51.net)
Shell 变量 | 菜鸟教程 (runoob.com)
(2条消息) linux shell数组赋值方法_bing.shao的博客-CSDN博客_shell数组赋值
(2条消息) 在shell中把ls的输出存进一个数组变量中_树静丶风止的博客-CSDN博客_bash ls 数组