특정 파일을 찾기 위해 와일드카드를 쌓는 방법은 무엇입니까?

특정 파일을 찾기 위해 와일드카드를 쌓는 방법은 무엇입니까?

이라는 이름의 모든 파일을 찾고 싶습니다 fooxxxbarxxx. 이 모든 파일의 공통점은 foobar.

*foo*bar*사용해 보았지만 *foo**bar*작동하지 않습니다.

특히 이러한 파일에 대한 소프트 링크를 만들려고 하고 있으며 나머지 코드는 이미 보다 직접적인 실행을 위해 작동하고 있습니다(모든 하위 폴더가 표시됨 path).

shopt -s globstar

ln -s /path/**/*foo*bar* .

감사해요

답변1

셸 에서는 이 OR 유형 셸 확장 옵션을 bash사용해야 합니다 .extglob

shopt -s extglob nullglob

그런 다음 와일드카드

ln -s /path/**/@(*foo*bar*|*bar*foo*)

답변2

POSIX적으로:

find /path -name '.*' -prune -o -name '*foo*' -name '*bar*' -exec sh -c '
  ln -s "$@" .' sh {} +

관련 정보