실행 파일과 텍스트 파일의 두 가지 유형의 파일을 찾는 방법

실행 파일과 텍스트 파일의 두 가지 유형의 파일을 찾는 방법

두 가지 유형의 파일(실행 파일과 텍스트 파일)을 찾아 해당 파일에 대한 소프트 링크를 만들고 싶습니다. 지금까지 내 솔루션은 다음과 같습니다.

find src -maxdepth 1 -not -type d -executable -exec ln -fs {} . \;; \
find src -name "*.txt" -exec ln -fs {} . \;

디렉토리 구조는 다음과 같습니다.

src
src/lapack
src/plasma

나는 및 하위 디렉터리의 실행 파일 src과 텍스트 파일 만 원합니다.*.txtlapackplasma

find두 호출을 하나로 결합하는 보다 우아한 솔루션을 찾고 싶습니다 . 해당 플래그를 사용해 보았지만 해당 옵션에 문제가 -o발생했습니다 .-maxdepth

고쳐 쓰다:

내가 시도하는 결합 명령은 다음과 같습니다.

find src -maxdepth 1 -not -type d -executable -o -path src -name "*.txt"

그러나 하위 디렉터리에서는 텍스트 파일을 가져올 수 없습니다. 나는 이것이 -maxdepth 1이전 플래그 때문이라고 생각합니다 -o.

답변1

GNU find 또는 지원되는 다른 find 를 사용하여 이 작업을 수행할 수 있지만 -path이보다 더 우아하다고 생각하지 않습니다.

find src \( -type f -executable ! -path 'src/*/*' -o -name '*.txt' \) \
     -exec ln -fs {} . +

대신 zsh를 사용할 수 있습니다. 그것은글로벌 예선find 구문보다 더 간결합니다.

ln -sf src/*/*(N*.) src/**/*.txt .

관련 정보