各フォルダでサブフォルダを見つけるときは、フォルダ名に基づく命名規則に従いますか?

各フォルダでサブフォルダを見つけるときは、フォルダ名に基づく命名規則に従いますか?

次の名前の複数のファイルを含む「サイト」フォルダがあります。

  • bu.my-url.com
  • dud.myurl.com
  • [must-be-indentical_string].myurl.com
  • など

/themes/amu_[must-be-indentical_string]各サイトフォルダのサイトフォルダ名と同じであることを確認したいと思います。

/sites/[must-be-indentical_string].myurl.com/themes/amu_[must-be-indentical_string]

そのような順序がありますか?

答え1

次のことができます。

#! /bin/sh -
cd /path/to/sites || exit
ret=0
for file in */themes/amu_*; do
  [ -e "$file" ] || continue
  dir=${file%%/*}
  theme=${file##*/amu_}
  case $dir in
    ("$theme".*) ;; # OK
    (*) printf>&2 '%s\n' "Mismatch: $file"
        ret=1;;
  esac
done
exit "$ret"

GNUの場合は、find以下も参照してください。

cd /path/to/sites &&
  find . -mindepth 3 -maxdepth 3 -regextype posix-basic \
    -path './*/themes/amu_*' \
    ! -regex '\./\(.*\)\..*/themes/amu_\1' \
    -fprintf /dev/stderr 'Mismatch: %P\n'

関連情報