同様の質問に対するさまざまな回答を読んでみましたが、特定のユースケースでは機能しません(または少なくとも機能させることはできません)。
複数のファイルを公開するためにglobパターンを指定できるCIビルドパイプラインがあります。パターンは "dir/subdir/**/*.ext" に似ています。私が望むのは、これらのファイルを公開する前に、このパターンに一致するファイルのリストを出力することです。
私は試した:
find . -path 'dir/subdir/**/*.ext'
ls 'dir/subdir/**/*.ext'
複数の置換が同様の結果を返すようです。
上記はfind
何も返しません。参考として実行するとfind . -path '**/*.ext'
返されます。
./dir/subdir/debug/file1.ext
./dir/subdir/debug/file2.ext
./dir/subdir/publish/file1.ext
コマンドls
を返すls: cannot access 'dir/subdir/**/*.ext': No such file or directory
処理する前に一致するファイルのリストを取得する方法はありますか?では、どうすればよいですか?
追加情報: ファイルのリストを取得する理由は、パターンに一致するファイルがない場合は、CI フェーズが失敗することを望むためです。
答え1
@muruのコメントは正しいです。しかし、私の質問に追加の詳細を追加することを忘れていました。つまり、一致するファイルがない場合は空のリストが必要なので、スクリプトが失敗する可能性があります。
この追加の背景を使用してこれを達成する方法は次のとおりです。
shopt -s globstar nullglob; printf %s\\n dir/subdir/**/*.ext
ありがとうこの回答追加のnullglobsの場合。