循环遍历所有文件夹并执行脚本

循环遍历所有文件夹并执行脚本

install.sh我当前目录中有一个 bash 脚本,并且我有一个apps包含多个目录的目录。我想循环遍历 app 文件夹中的这些子目录并执行一些脚本。在第一个文件夹中执行脚本后,它应该返回并进入下一个文件夹。我试过了,但它一个接一个地跳过。我的意思是它进入所有奇数文件夹,而不是进入偶数文件夹。

代入install.sh

for f in apps/*;
  do 
     [ -d $f ] && cd "$f" && echo Entering into $f and installing packages
     cd ..
  done; 

答案1

使用父目录的完整路径(在我的情况下apps目录位于我的主目录中)并删除一个多余的命令(cd ..

for dir in ~/apps/*;
  do 
     [ -d "$dir" ] && cd "$dir" && echo "Entering into $dir and installing packages"
  done;

参见截图:使用cd ..命令并使用apps/*

在此处输入图片描述

参见截图:无需cd ..命令并使用~/apps/*

在此处输入图片描述

答案2

您可以使用与此建议find一起使用。您的应该是 execinstall.sh

#!/bin/bash
find ./apps -type d -exec echo Entering into {} and installing packages \; 

-exec用您的命令替换后面的文本

例如

#!/bin/bash
find ./apps -type d -exec touch {}/test.txt  \;  

它将循环遍历 app 及其所有子目录,并创建一个 text.txt 文件

相关内容