複数の既存フォルダのフォルダ構造を再構築する作業中です。したがって、欠落しているフォルダがある場合は追加する必要があります。
まず、ifコマンドを使用してディレクトリが存在することを確認し、存在しない場合はディレクトリを作成します。大文字と小文字が区別されたため、同じフォルダを再作成しました。
例:ABCを含むフォルダはすでに存在しますが、abcがスキャンされているため、abcを含む新しいフォルダを再作成し、時にはAbcを含むフォルダが存在することがあります。
ベストアンサー1
存在するbash
:
shopt -s nullglob nocaseglob
set -- [a]bc/
if [ "$#" -gt 0 ]; then
echo 'There is at least one directory called "abc" (case ignored):'
printf '\t%s\n' "$@"
fi
2つのbash
シェルオプションは、nullglob
パターンと一致するディレクトリがあるかどうかをnocaseglob
テストするために使用されます(大文字と小文字を区別しない)。[a]bc/
このnullglob
オプションを使用すると、一致するものがない場合(そうでない場合は拡張されません)、パターンが削除され、パターン一致で大文字とnocaseglob
小文字が区別されなくなります。
ディレクトリと一致するファイル名を呼び出す[a]bc/
代わりに使用します。abc
私たちは[a]
シェルがワイルドカードを実行することを強制します。みんな名前と一致し、後で/
一致をディレクトリに限定します。これを引数として、set
位置引数を一致するディレクトリ名に設定します。それからそれを見つけることができ、$@
一致する数量をで見つけることができます$#
。
テスト:
$ mkdir abc aBc ABc # create three directories with only case diffs in their names
$ touch abC # ... and also a file
$ bash ./script.sh
There is at least one directory called "abc" (case ignored):
ABc/
aBc/
abc/