フォルダの最初のレベルのサブフォルダにbash操作を適用する

フォルダの最初のレベルのサブフォルダにbash操作を適用する

次のフォルダ構造があるとしましょう。

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

親フォルダを入力として受け取り、最初のレベルのサブフォルダにいくつかの固定操作を適用するbashスクリプトが必要です。たとえば、

$> myScript parent1

これにより、最初のレベルのサブフォルダー(subfolder1とサブフォルダー)が表示され、呼び出しごとに固定された一連の作業が提供されます。たとえば、次のようになります。

  1. ls サブフォルダ 1
  2. du サブフォルダ 2

この機能を実装するbashスクリプトを提供できますか?

重要:タスクの1つが失敗すると、フォルダはスキップされ、スクリプトは次のフォルダに移動します。

答え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

関連情報