经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Linux/Shell » 查看文章
shell脚本for循环实现文件和目录遍历
来源:jb51  时间:2021/11/24 12:48:19  对本文有异议

一个for循环实现一个目录下的文件和目录遍历,很实用

  1. [root@localhost shell_order]# cat test27.sh
  2. #!/bin/bash
  3. #print the directory and file
  4. for file in /home/hustyangju/*
  5. do
  6. if [ -d "$file" ]
  7. then
  8. echo "$file is directory"
  9. elif [ -f "$file" ]
  10. then
  11. echo "$file is file"
  12. fi
  13. done
  14. [root@localhost shell_order]# ./test27.sh
  15. /home/hustyangju/array is directory
  16. /home/hustyangju/menuwindow-7.12 is directory
  17. /home/hustyangju/menuwindow-build-desktop is directory
  18. /home/hustyangju/shell_order is directory
  19. [root@localhost shell_order]#

递归遍历

  1. #! /bin/bash
  2. read_dir(){
  3. for file in `ls $1` #注意此处这是两个反引号,表示运行系统命令
  4. do
  5. if [ -d $1"/"$file ] #注意此处之间一定要加上空格,否则会报错
  6. then
  7. read_dir $1"/"$file
  8. else
  9. echo $1"/"$file #在此处处理文件即可
  10. fi
  11. done
  12. }
  13. #读取第一个参数
  14. read_dir $1

补充:Shell遍历目标目录和子目录下的所有文件

1.编写代码

  1. #!/bin/bash
  2. function getdir(){
  3. for element in `ls $fd`
  4. do
  5. dir_or_file=$fd"/"$element
  6. if [ -d $dir_or_file ]
  7. then
  8. getdir $dir_or_file
  9. else
  10. echo $dir_or_file
  11. fi
  12. done
  13. }
  14. root_dir="/opt/datas"
  15. 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文件和目录遍历内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号