shell脚本for循环实现⽂件和⽬录遍历⼀个for循环实现⼀个⽬录下的⽂件和⽬录遍历,很实⽤
[root@localhost shell_order]# cat test27.sh
#!/bin/bash
#print the directory and fileshell代码
for file in /home/hustyangju/*
do
if [ -d "$file" ]
then
echo "$file is directory"
elif [ -f "$file" ]
then
echo "$file is file"
fi
done
[root@localhost shell_order]# ./test27.sh
/home/hustyangju/array is directory
/home/hustyangju/menuwindow-7.12 is directory
/home/hustyangju/menuwindow-build-desktop is directory
/home/hustyangju/shell_order is directory
[root@localhost shell_order]#
递归遍历
#! /bin/bash
read_dir(){
for file in `ls $1` #注意此处这是两个反引号,表⽰运⾏系统命令
do
if [ -d $1"/"$file ] #注意此处之间⼀定要加上空格,否则会报错
then
read_dir $1"/"$file
else
echo $1"/"$file #在此处处理⽂件即可
fi
done
}
#读取第⼀个参数
read_dir $1
补充:Shell遍历⽬标⽬录和⼦⽬录下的所有⽂件
1.编写代码
#!/bin/bash
function getdir(){
for element in `ls $fd`
do
dir_or_file=$fd"/"$element
if [ -d $dir_or_file ]
then
getdir $dir_or_file
else
echo $dir_or_file
fi
done
}
root_dir="/opt/datas"
getdir $root_dir
2.参数
-e 判断对象是否存在
-d 判断对象是否存在,并且为⽬录
-
f 判断对象是否存在,并且为常规⽂件
-L 判断对象是否存在,并且为符号链接
-h 判断对象是否存在,并且为软链接
-s 判断对象是否存在,并且长度不为0
-r 判断对象是否存在,并且可读
-w 判断对象是否存在,并且可写
-x 判断对象是否存在,并且可执⾏
-O 判断对象是否存在,并且属于当前⽤户
-G 判断对象是否存在,并且属于当前⽤户组
-nt 判断file1是否⽐file2新 [ "/data/file1" -nt "/data/file2" ]
-ot 判断file1是否⽐file2旧 [ "/data/file1" -ot "/data/file2" ]
3.测试
测试结果:打印出来了⽬标⽬录以及⼦⽬录下的所有⽂件
到此这篇关于shell脚本for循环实现⽂件和⽬录遍历的⽂章就介绍到这了,更多相关shell⽂件和⽬录遍历内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论