Bashを使用して1つ以上のファイル(ディレクトリ/ ies)が存在するかどうかを確認するには?

Bashを使用して1つ以上のファイル(ディレクトリ/ ies)が存在するかどうかを確認するには?

Bash 3.2.52(2)がインストールされているCentOSでは、以前に存在しなかったことを確認した後、両方のバックアップディレクトリを作成してみました。

rm -rf "${general_backups_dir}"
rm -rf "${specific_backups_dir}"
mkdir -p "${general_backups_dir}"
mkdir -p "${specific_backups_dir}"

タスクをテストするにはls -laデバッグモードで作業できますが、両方のディレクトリの存在を示すより正確な方法が必要です。


これはうまくいきません:

ls -la ${HOME} | grep "${general_backups_dir}"
ls -la ${HOME} | grep "${specific_backups_dir}"

ところで、私は(擬似コード)のような一行の操作を好みます。

ls -la ${HOME} | grep *EXPRESSION_INCLUDED_IN_BOTH_DIRECTORY_NAMES*

ベストアンサー1

-d次に、テスト演算子を使用してディレクトリが存在することを確認しますbash

if [[ -d testdir ]]; then echo "testdir already exists"; else mkdir testdir; fi

"testdir"を変数に置き換えることができます。安全のために変数を二重引用符で囲んでください。

if [[ -d "$backup_dir"]]; then echo "$backup_dir already exists"; else mkdir "$backup_dir"; fi

ネストされたディレクトリ(dir1 / dir2 / dir3など)の場合は、代わりにを使用してくださいmkdir -p

ファイルテスト演算子の詳細については、次を参照してくださいbashhttps://tldp.org/LDP/abs/html/fto.html

おすすめ記事