交互式shell脚本遍历文件目录下的所有文件和目录(绝对路径)
Posted isk--cosann
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了交互式shell脚本遍历文件目录下的所有文件和目录(绝对路径)相关的知识,希望对你有一定的参考价值。
背景介绍
Linux系统想要获取一个工作目录下的文件和目录不是很方便,也没用现成的命令可以直接使用,
因此使用Shell实现了一个简单地可以将目标目录下的文件和目录输出打印出来的脚本。
实现代码
#!/bin/bash
#!/bin/bash
#version:2.0
#author:cosann
#date:20220709
#description:
#1.修复显示不全问题
#2.加入文件目录判断检测
#3.优化输出显示
while true
do
#打印脚本介绍信息
echo -e "\\n==================================================="
echo -e "====该脚本可以遍历指定文件目录下的所有文件和目录==="
echo -e "==================================================="
echo -e "1. 输入0即可退出程序》》》"
#交互式用户输入要操作的目标文件目录
read -p "2. 请输入要遍历的目录: " dir
#定义遍历目录函数
function getdir()
#循环控制
for i in `ls $1`
do
all_dir=$1"/"$i
#echo $all_dir
if [ -d $all_dir ]
then
#将文件目录信息追加至dir_result.txt
echo -e "Dir:\\t$all_dir" >> ./dir_result.txt
#再次调用函数对子目录的文件进行遍历
getdir $all_dir
else
#将文件信息追加至dir_result.txt
echo -e "File:\\t$all_dir" >> ./dir_result.txt
fi
done
#键盘输入判断(0退出程序,目录是否存在检测)
if [[ "$dir" == "0" ]]
then
#退出程序
echo -e "\\n###!!!感谢使用,再见!!!###"
#删除dir_result.txt文件
rm -f ./dir_result.txt &> /dev/null
exit 0
elif [ -d "$dir" -a ! -z "$dir" ]
then
#删除dir_result.txt,重置dir_result.txt内容,确保在追加时没有数据
rm -f ./dir_result.txt &> /dev/null
#对用户输入的目标文件目录,调用函数进行遍历
getdir $dir
#输出结果信息
cat_num=`cat ./dir_result.txt | wc -l`
#打印输出控制
if [[ $cat_num -ge "40" ]]
then
echo -e "\\033[32m $dir目录遍历结果: \\033[0m"
cat ./dir_result.txt | more
else
echo -e "\\033[32m $dir目录遍历结果: \\033[0m"
cat ./dir_result.txt
fi
else
echo -e "\\033[41;37m 路径不存在,请重新输入!!! \\033[0m"
fi
done
使用案例
#将代码内容写入并创建一个脚本文件,例如dir.sh
#添加执行权限
chmod +x dir.sh
#执行脚本
./dir.sh
脚本运行界面
脚本执行结果
代码不足之处,欢迎提出交流学习~
以上是关于交互式shell脚本遍历文件目录下的所有文件和目录(绝对路径)的主要内容,如果未能解决你的问题,请参考以下文章
用shell脚本递归遍历某个目录下的所有文件并移动到某个指定的目录中