다른 디렉토리에서 문자열 및 심볼릭 링크 파일을 포함하는 파일 이름을 반복적으로 "찾기"

크리스

작업중인 프로젝트에서 특정 파일 집합을 심볼릭 링크하려고합니다.

심볼릭 링크를 원하는 각 파일 이름에 알려진 문자열이 있습니다.

지금까지 내가 가지고있는 것은 다음과 같습니다.

ln -s find ~/path/to/src/ -name "*stringtomatch*" find ~/path/to/dest

소스와 일치하도록 대상에 디렉터리 구조를 설정했지만 디렉터리 일 뿐이므로 빈 대상에 대한 명령을 작성하는 것이 더 쉬우면 삭제해도 상관 없습니다.

최신 정보:

이제 작동하는 답변을 수락했으며 유사한 사용 사례가 더 쉽게 솔루션을 찾을 수 있도록 일부 컨텍스트를 공유하고 싶습니다.

저는 대부분의 코딩을 Netbeans에서 수행합니다. 프로젝트 용 패키지를 빌드 할 때 파일 이름의 일부를 공통으로 갖도록 모든 관련 파일의 이름을 지정하는 경향이 있습니다. 이를 통해 프로젝트 내에서 이동할 때 내 패키지 파일을 쉽게 찾을 수 있습니다. 그러나 현재 프로젝트에서는 많은 양의 파일과 디렉토리가 관련되어 있기 때문에 시간이 많이 걸립니다.

내가 지금 가지고있는 것은 마스터 프로젝트 계층 구조를 유지하면서 해당 패키지에 대한 파일 만 표시하는 내 패키지 각각에 대해 정의 된 별도의 프로젝트입니다.

마스터 프로젝트 내에서 내 패키지 파일에 대한 심볼릭 링크를 사용하는 별도의 패키지 프로젝트를 구축함으로써 현재 형태의 Netbeans IDE 내에서 사용할 수없는 것으로 보이는 완벽한 솔루션을 효과적으로 만들었습니다.

각 하위 프로젝트는 자신과 관련된 파일의 하위 집합에 대해 작업 할 수있게 해주므로 키보드 사용 시간이 더 효율적입니다.

Eclipse는 없지만 Eclipse에는이 기능이 내장되어 있다고 생각합니다.

따라서 타협이긴하지만 Netbeans에 대한이 해결 방법은 내가 오늘 달성 할 수있는 깨끗한 솔루션이라고 생각합니다. 내가 예상했던 것보다 낫지는 않더라도 잘 작동한다는 것은 엄청난 보너스입니다.

하위 프로젝트를 편집 한 후 마스터의 수동 동기화를 실행할 것으로 예상했습니다. 그렇지 않습니다. 마스터는 여전히 자동 동기화를 유지합니다.

파비아노

결과를 쉽게 확인할 수있는 멋진 출력과 함께이 작업을 수행하는 짧은 스크립트를 만들었습니다. 대상 디렉터리 구조를 만들 필요가 없습니다. 다음과 같이 사용하십시오.

$ ./recursive-symlink.sh --help
Usage:
  ./recursive-symlink.sh <source_path> <dest_path> <find_args...>

사용법을 보여주기 위해 처음에 다음 파일 / 디렉터리가 있다고 가정 해 보겠습니다.

├── recursive-symlink.sh*
└── src/
    ├── dir1/
    │   ├── file_A_misc.txt
    │   └── file_B_sub.txt
    ├── dir3/
    │   ├── file_A3.txt
    │   ├── file_C.txt
    │   └── subsub_dir/
    │       ├── file_Asubsub.txt
    │       └── file_D.txt
    ├── dir_A/
    │   └── should_be_empty.dat
    ├── file_A.txt
    └── file_B.txt

내가 실행하면 :

$ find -name '*_A*'
./src/file_A.txt
./src/dir3/file_A3.txt
./src/dir3/subsub_dir/file_Asubsub.txt
./src/dir_A
./src/dir1/file_A_misc.txt

어떤 파일이 링크되는지 볼 수 있습니다. 그런 다음 다음과 같은 스크립트를 실행합니다.

$ ./recursive-symlink.sh src/ dest/ -name '*_A*'
src/file_A.txt
mkdir: created directory 'dest'
'dest/file_A.txt' -> '../src/file_A.txt'

src/dir3/file_A3.txt
mkdir: created directory 'dest/dir3'
'dest/dir3/file_A3.txt' -> '../../src/dir3/file_A3.txt'

src/dir3/subsub_dir/file_Asubsub.txt
mkdir: created directory 'dest/dir3/subsub_dir'
'dest/dir3/subsub_dir/file_Asubsub.txt' -> '../../../src/dir3/subsub_dir/file_Asubsub.txt'

src/dir_A
'dest/dir_A' -> '../src/dir_A'

src/dir1/file_A_misc.txt
mkdir: created directory 'dest/dir1'
'dest/dir1/file_A_misc.txt' -> '../../src/dir1/file_A_misc.txt'

내 최종 상태는 다음과 같습니다.

├── recursive-symlink.sh*
├── src/
│   ├── dir1/
│   │   ├── file_A_misc.txt
│   │   └── file_B_sub.txt
│   ├── dir3/
│   │   ├── file_A3.txt
│   │   ├── file_C.txt
│   │   └── subsub_dir/
│   │       ├── file_Asubsub.txt
│   │       └── file_D.txt
│   ├── dir_A/
│   │   └── should_be_empty.dat
│   ├── file_A.txt
│   └── file_B.txt
└── dest/
    ├── dir1/
    │   └── file_A_misc.txt -> ../../src/dir1/file_A_misc.txt
    ├── dir3/
    │   ├── file_A3.txt -> ../../src/dir3/file_A3.txt
    │   └── subsub_dir/
    │       └── file_Asubsub.txt -> ../../../src/dir3/subsub_dir/file_Asubsub.txt
    ├── dir_A -> ../src/dir_A/
    └── file_A.txt -> ../src/file_A.txt

당신이 볼 수있는 dest, 디렉토리가 자동으로 생성됩니다뿐만 아니라 모든 재귀 서브 디렉토리를, 그리고에 destDIR, 일치하는 것으로 파일 만 *_A*패턴이 연결되어 있었다.


다음은 스크립트 소스 코드입니다.

#!/bin/bash

verbose='-v'  # you may comment this line

if [ "$1" == '-h' ] || [ "$1" == '--help' ] || [ $# -lt 3 ]
then
    echo "Usage:"
    echo "  $0 <source_path> <dest_path> <find_args...>"
    exit
fi

src="${1%/}" ; shift
dest="${1%/}" ; shift
relflag='' ; [ "${src:0:1}" != '/' ] && relflag='-r'

find "$src" \( "$@" \) -print0 |
    while IFS= read -r -d '' f
    do
        base_fname="${f#$src}"
        [ "$verbose" ] && echo "${f}"
        dest_ln="$dest/${base_fname#/}"
        dest_dir="$(dirname "$dest_ln")"
        mkdir -p $verbose "$dest_dir"
        ln $relflag -s $verbose -t "$dest_dir" "$f"
        [ "$verbose" ] && echo
    done

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관