@programming
投稿日 2024/11/27
更新日 2024/11/27 ✏
bash: ディレクトリを遡って特定のファイルがあった場所を取得
あるディレクトリから上方向へ遡りながら特定のファイルがあるパスを探すbashスクリプト。
#!/usr/bin/env bash
#
# 指定ディレクトリから上へ遡りながら
# 指定ファイルが存在するディレクトリパスを発見します。
#
# Argument:
# <検索対象ファイル名> e.g. test.txt
# <検索開始地点パス> /path/to/start/searching/file/for/dir/
#
# 引数1: 探し出したいファイル名
file=$1
# 引数2: 検索開始位置ディレクトリ
dir=$(realpath $2) # NOTE: 相対パスが渡されても絶対パスに統一
# 指定ファイルが見つかったディレクトリを格納する変数
found=""
# 一番上の階層"/"までループ
until [ "$dir" = "/" ]; do
# ファイルが見つかったらループを抜ける
if [ -f "${dir}/${file}" ]; then
found=${dir}
break;
fi
# ひとつ上の階層へ移動
dir=$(realpath -q "${dir}/..")
done
# 結果を標準出力
echo "${found}"
END