部分名に基づいてファイルが存在するかどうかを確認する方法 [重複]

部分名に基づいてファイルが存在するかどうかを確認する方法 [重複]

ご存知のように、ファイルを確認する方法はこんな感じです。

[[ -f  /var/scripts_home/orig_create_DB_files_1.46.38 ]] && echo file exist

ただし、ファイルに名前 - "が含まれている場合は、ファイルが存在するかどうかを確認する方法データベースファイルの生成

私はこれを試しましたが、うまくいきません

[[ -f  /var/scripts_home/*create_DB_files* ]] && echo file exist

または

   partial_file_name=create_DB_files

   [[ -f  /var/scripts_home/*$partial_file_name* ]] && echo file exist

答え1

for name in *create_DB_files*; do
    if [ -f "$name" ]; then
        printf 'at least one file exists (%s)\n' "$name"
        break
    fi
done

つまり、関連する名前を一致させ、そのうちの1つが通常のファイルであることを確認します(見つかったらループを終了します)。

答え2

これは、ファイルを見つけることができるすべての柔軟性を使用して、名前の一部に基づいてファイルが存在するかどうかをテストしますfind

find . -name '*create_DB_files*' -printf 1 -quit | grep -q 1

-type f通常のファイルに制限の一致を追加することを検討したり、ファイルの-mtime日付を一致させたり、-maxdepth 1検索を現在のディレクトリに制限したりする場合などが考えられます。

if上記は次のコマンドで組み合わせることができます。

if find . -name '*create_DB_files*' -printf 1 -quit | grep -q 1
then
    echo found
else
    echo Not found
fi

関連情報