📌  相关文章
📜  在每个递归目录上执行命令 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:51:29.871000             🧑  作者: Mango

在每个递归目录上执行命令 - Shell-Bash

当我们需要在一个目录及其所有子目录中执行命令时,使用递归方式非常方便。在Shell-Bash中,我们可以使用递归函数来实现这一目标。

以下是一个示例的递归函数,用于在每个递归目录上执行命令:

#!/bin/bash

execute_in_recursive_directory() {
  local dir="$1"
  local command="$2"
  
  # 判断目录是否存在
  if [ -d "$dir" ]; then
    # 在当前目录执行命令
    cd "$dir"
    eval "$command"
    
    # 递归调用子目录
    for sub_dir in "$dir"/*/; do
      execute_in_recursive_directory "$sub_dir" "$command"
    done
    
    # 回到上级目录
    cd ..
  fi
}

# 在指定目录下执行命令
target_directory="/path/to/directory"
command_to_execute="ls -l"

# 调用递归函数
execute_in_recursive_directory "$target_directory" "$command_to_execute"

以上代码是一个简单的递归函数 execute_in_recursive_directory,它接受两个参数:要执行命令的目录和要执行的命令本身。在函数内部,它首先检查目录是否存在。如果目录存在,它会切换到该目录并在当前目录中执行给定的命令。

然后,它会通过使用通配符 /*/ 遍历目录中的所有子目录,并对每个子目录调用递归函数。这样就能在所有递归目录中执行相同的命令。

最后,函数会回到上级目录以完成递归调用。

可以将上述代码保存为一个Shell脚本文件,并在终端中执行。确保将 target_directorycommand_to_execute 替换为您想要的实际目录和命令。

执行结果将按Markdown格式返回,您可以将其复制粘贴到Markdown文档中。

请注意,递归执行命令时要谨慎,确保命令是安全的、不会引发意外的副作用,并且递归目录的层级不会太深,以避免无限循环或系统资源耗尽的情况。