이라는 이름의 모든 파일을 찾고 싶습니다 fooxxxbarxxx
. 이 모든 파일의 공통점은 foo
및 bar
.
*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 {} +