`
冲杯茶喝
  • 浏览: 30572 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

shell编程之如何遍历进入当前目录下的所有子目录(转)

阅读更多

问题:

我想在顶层目录下编写一个脚本来调用自录下的clean.sh文件,该如何实现?

 

第一种情况:

假设目录结构为:

fme/

     |__clean.sh 

     |__dc250/clean.sh

     |__dc300/clean.sh

     |__dc350/clean.sh

现在我在fme结构下编写一个clean.sh文件调用各个子目录下的clean.sh文件。

实现方法如下:

 #!/bin/bash

复制代码
 for dir in `ls .`
 
do
   
if [ -d $dir ]
   then
     echo $dir
     cd $dir
     . clean.sh
     cd ..
   fi
done 
复制代码

 

这里需要学习的是if的判断语句。

文件表达式
if [ -f  file ]    如果文件存在
if [ -d ...   ]    如果目录存在
if [ -s file  ]    如果文件存在且非空 
if [ -r file  ]    如果文件存在且可读
if [ -w file  ]    如果文件存在且可写
if [ -x file  ]    如果文件存在且可执行

 

 

整数变量表达式
if [ int1 -eq int2 ]    如果int1等于int2   
if [ int1 -ne int2 ]    如果不等于    
if [ int1 -ge int2 ]       如果>=
if [ int1 -gt int2 ]       如果>
if [ int1 -le int2 ]       如果<=

if [ int1 -lt int2 ]       如果< 

 

字符串变量表达式
If  [ $a = $b ]                 如果string1等于string2
                                字符串允许使用赋值号做等号
if  [ $string1 !=  $string2 ]   如果string1不等于string2       
if  [ -n $string  ]             如果string 非空(非0),返回0(true)  
if  [ -z $string  ]             如果string 为空

if  [ $sting ]                  如果string 非空,返回0 (和-n类似)  


此问题就这样解决了。

 

还学习到了一个遍历所有子目录的表达方式:

find . -type d | while read dir; do echo $dir; done

 

第二种情况:

第一种情况是两层次的目录是父子关系,因此可以上面的方法实现。若两个层次上的目录并不是直接的父子关系,这时候在用上面的方法显然不合适。这里采用更加简洁的方法,第一种情况亦可以用。

复制代码
#!/bin/bash
for dir in `find . -name clean.sh`
do
  path
=`dirname $dir`
  
if [ $path != . ]
  then
    echo $path
    cd $path
    . clean.sh
    cd 
-
  fi
复制代码

done

 

学习点:

搜索某个文件:

find . -name clean.sh

提取出路径名

dirname path

字符串判断

if [ $path != . ] ; 原来点就可以直接作为字符串

分享到:
评论

相关推荐

    shell脚本递归遍历目录及子目录的例子分享

    接着,使用`for`循环遍历当前目录下的所有文件和子目录。如果当前项是目录,函数递归调用自身,将子目录作为新的参数。如果当前项是文件,就简单地打印出文件名。如果输入的不是目录,脚本会给出错误提示并退出。 *...

    遍历磁盘目录.rar

    这个函数返回一个生成器,每次迭代都会返回当前目录名、所有子目录名以及当前目录下的所有文件名。 在Java中,可以利用`java.io.File`类的`list()`或`listFiles()`方法遍历目录,如果需要递归遍历,可以使用递归...

    linux下shell编程

    # 遍历当前目录中的所有文件 for file in *; do # 打印文件名 echo "文件名: $file" done ``` #### 五、Shell 编程的进阶技巧 随着经验的增长,开发者可以学习更高级的 Shell 编程技巧,例如: - **管道操作**...

    遍历输入的目录

    "遍历目录"是指通过编程方式逐个访问指定目录及其子目录下的所有文件和子目录,包括隐藏文件。这种操作通常用于文件备份、文件搜索、日志分析等多种场景。接下来,我们将深入探讨如何在不同的编程语言中实现遍历目录...

    Shell脚本统计当前目录下目录和文件的数量

    如果你需要统计当前目录及其所有子目录下的目录和文件数量,你需要使用递归的方式来实现。例如,可以使用`find . -type d`和`find . -type f`来分别获取目录和文件的数量。 总的来说,这个简单的Shell脚本提供了一...

    Linux网络操作系统基础:shell编程基础.pptx

    Linux网络操作系统基础中的Shell编程是系统管理与自动化任务的核心技能之一。Shell编程允许用户通过编写脚本来执行一系列命令,提高工作效率。以下是对Shell编程基础知识的详细讲解: 首先,熟悉Shell基础知识意味...

    linux与unix shell编程指南读书笔记.rar

    通过阅读《LINUX与UNIX SHELL编程指南》并配合实践,可以逐步精通Shell编程,提升在Linux环境下的工作效率。同时,"中国IT认证实验室学习下载频道.txt"可能提供了更多学习资源和实践案例,可以帮助你进一步提升技能...

    Linux Shell编程指导

    这里的`test $# = 0`检查命令行参数的数量,如果为零,则执行`ls`命令,否则,使用`for`循环遍历每个参数并使用`grep`过滤出子目录。 编写Shell脚本通常涉及以下几个步骤: 1. 使用文本编辑器(如vi)创建文件,...

    提取当前目录下的文件名 提取文件下的所有文件的名字

    在PowerShell中,可以使用`Get-ChildItem -Name`命令来获取当前目录及其子目录下的所有文件名。 **Linux和Unix系统** 在Linux和Unix环境中,我们通常使用`bash`或其他shell脚本来处理这类任务。通过执行`ls`命令...

    习题07-Shell编程.doc

    【Shell编程基础与实践】 1. Shell全局变量的定义:在Shell编程中,定义全局变量使用的是`export`命令,例如`export VARNAME=value`。这样定义的变量可以在当前会话的所有子进程中被访问。 2. 读取文件内容到Shell...

    shell编程和unix命令

    -name "file.txt"`在当前目录及其子目录下查找名为`file.txt`的文件。 11. **man**:查看命令的帮助文档。 12. **chmod**:更改文件或目录的权限,如`chmod 755 file.sh`使文件具有执行权限。 13. **chown**和`...

    linux与unixshell编程指南

    《Linux与Unix Shell编程指南》是一本专注于Shell脚本编程技术的权威教程,适用于那些希望在Linux或Unix操作系统环境中提升自动化任务处理能力的用户。Shell编程是Linux和Unix系统中的重要组成部分,它允许用户通过...

    shell高级编程实例

    本压缩包“shell高级编程实例”显然是为了教授如何利用Shell进行更复杂的编程实践。以下是关于Shell高级编程的一些关键知识点: 1. **变量与环境变量**:在Shell脚本中,变量用于存储数据。它们可以是字符串、数字...

    shell编程基础.pdf

    上述命令将在当前目录及其子目录中查找扩展名为 `.txt` 的文件,并在这些文件中搜索包含 "example" 关键字的内容。 #### 五、进阶话题 - **函数**:定义和调用自定义函数以提高代码复用性。 - **数组**:使用数组...

    Shell脚本编程1

    这个脚本的目标是输出当前目录及其子目录下的所有文件和目录,每一层缩进一定的空格。我们可以递归地处理每个子目录来实现这一目标。以下是一个简单的实现: ```bash #!/bin/bash # 定义初始缩进 indent=0 # 递归...

    Linux与Unix shell编程 part4

    done`,遍历当前目录下的所有文件。`while`循环则基于条件持续执行,直到条件不满足为止,如`while read line; do ...; done`可以从标准输入或文件中读取每一行。 函数可以将常用操作封装起来,提高代码可重用性。...

    linux和unix shell编程指南

    2. **Shell命令**:学习各种基本的Shell命令,如ls(列出目录内容)、cd(改变目录)、pwd(显示当前工作目录)、mv(移动或重命名文件)和rm(删除文件)等,以及它们的选项和用法。 3. **管道和重定向**:掌握...

    shell编程13问

    - **exec与source**:exec命令用于启动新的程序替换当前shell,而source命令则用于在当前shell环境中执行脚本。 - **命令组()与{}**:圆括号()和花括号{}在Shell脚本中用于命令的分组,但它们的行为略有不同。 - *...

Global site tag (gtag.js) - Google Analytics