将 bash 操作应用于文件夹的第一级子文件夹

将 bash 操作应用于文件夹的第一级子文件夹

假设我有这个文件夹结构:

parent1
   |----- subfolder1
              |--- x
              |--- y
   |----- subfoldern
              |--- x
              |--- y
parentn
   |----- subfoldern1
              |--- x
              |--- y
   |----- subfoldernn
              |--- x
              |--- y

我需要一个 bash 脚本,该脚本接收父文件夹作为输入,并在第一级子文件夹中应用一些固定操作。例如:

$> myScript parent1

这将获得第一级子文件夹(subfolder1 和 subfoldern),并为每个调用提供固定的操作集,例如:

  1. ls 子文件夹1
  2. du 子文件夹2

您能提供一个实现此功能的 bash 脚本吗?

重要信息:如果其中一个操作失败,则会跳过该文件夹,并且脚本将移至下一个文件夹。

答案1

  • 您只能在模式末尾使用斜杠来迭代目录。
  • 您可以通过使用命令之间的命令来使一系列命令在第一次失败时中止&&

所以这一切都归结为:

for d in parent/*/ ; do ls "$d" && du "$d" ; done 

答案2

#!/bin/bash

folder=$1

# Find the first level of folders within the specified folder
for child in $(find $folder -mindepth 1 -maxdepth 1 -type d); do
    # If the command fails, # bash will carry on to the next folder anyway :)
    echo $child  # Replace with magic command
done

相关内容