이와 유사한 질문에 대한 다양한 답변을 읽고 시도했지만 특정 사용 사례에서는 작동하지 않습니다(또는 적어도 작동하게 할 수는 없습니다).
여러 파일을 게시하기 위해 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의 경우.