심볼릭 링크에서 작동하지 않습니다?


15

이 명령을 실행해도 find $HOME/MySymlinkedPath -name "run*.sh"아무 일도 일어나지 않으며 오류가 발생하지 않습니다 ( 'MySymlinkedPath'는 $ HOME이 아닌 다른 하드 드라이브에 대한 심볼릭 경로입니다).

이것들은 또한 실패합니다 :

find ~/MySymlinkedPath -name "run*.sh"
find /home/MyUserName/MySymlinkedPath -name "run*.sh"

그리고 확실히하기 위해, 존재하지 않는이 경로는 (물론) 실패 find $HOME/MySymlinkedPathDUMMYTEST -name "run*.sh"하므로 경로가 발견되지만 (오류가 발생하지 않기 때문에) find검색을 수행하지 않으며 지금은 실마리가 없습니다.

cd $HOME/MySymlinkedPath처음과 같이 경로 참조를 제거해야 작동 find -name "run*.sh"하지만 스크립트에는 좋지 않습니다.

추가 정보 :
이 명령은 평소 ls $HOME/MySymlinkedPath/run*.sh와 같이 작동하며 거기에 가서 cd $HOME/MySymlinkedPath이것을 실행 ls ..하면 결과가 기대 한 것이 아닙니다-심볼릭 경로가있는 경로 목록-실제 경로 목록을 반환합니다 다른 미디어 / 하드 드라이브 !!!

pwd -P
/media/MediaIdentifier/RealPath
pwd
/home/MyUser/MySymlinkedPath

다시 생각 :
이 문제인가 find하고 ls, 또는 내 시스템에? 또는 전혀 문제가되지 않습니다. 우분투 12.10에 있습니다. 테스트 한 모든 터미널에서 실패하므로 터미널 "문제"가 아닌 것 같습니다.


1
"find-follow"에 대한 더 나은 답변을 찾았습니다. stackoverflow.com/questions/105212/…
Jarod

> : @Jarod 메뉴얼 페이지 -follow가되지 않으며 우리는 내 대답은 아래에로 (또한 --follow됩니다) -L을 사용한다 말한다
물병 전원

답변:


20

여기 에 답이 있습니다. 그러나 그 질문은 문제의 목표로 bash를 가리 킵니다.

설명은 find찾은 것 "$HOME/MySymlinkedPath"입니다. 디렉토리가 아닌 기호 링크이므로 재귀 강하가 중지됩니다. 식이 일치하면 "$HOME/MySymlinkedPath"(예 :에서 find "$HOME/MySymlinkedPath" -name 'My*') find일치로 인쇄합니다.

거기에서 지적했듯이, 처리하고 모든 스크립트를 수정하는 가장 쉽고 깨끗한 방법은 다음과 같습니다.

find "$HOME/MySymlinkedPath" -name "run*.sh"

슬래시를 추가 find하면 심볼릭 링크가 아닌 심볼릭 링크의 대상에서 시작됩니다.

find "$HOME/MySymlinkedPath/" -name "run*.sh"

또는, 명령 행에 전달 된 기호 링크를 순회 하도록 -H옵션을 전달하십시오 find(경로 전에 먼저 와야 함에 유의하십시오). (이것은 재귀 강하 중에 만난 심볼릭 링크를 횡단하도록 -L지시 find하는 것과 다릅니다 .)

find -H "$HOME/MySymlinkedPath" -name "run*.sh"

마지막으로 -L폴더를 통해 심볼릭 링크 된 여러 파일 시스템 때문에 여기에서 가장 잘 작동했습니다 . 그러나 문제가없는 많은 오류 메시지를 생성하므로 추가했습니다 2>/dev/null. 또한이 별칭을 만들기로 결정했습니다 alias find='find -L'.

find -L "$HOME/MySymlinkedPath" -name "run*.sh" 2>/dev/null

2
IMHO, 일반적으로 디렉토리 뒤에 슬래시를 사용하여 실제로 디렉토리임을 나타내는 것이 좋습니다. :) 물건을 더 읽기 쉽게 만듭니다.
dannysauer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.