"찾기"를 사용하여 시작점에서 경로를 찾는 방법

"찾기"를 사용하여 시작점에서 경로를 찾는 방법

conEmu를 사용하는 Windows에 일종의 Linux 터미널이 있습니다.

Windows에서는 sublime을 사용하여 파일을 열도록 변수를 구성했으며 다음을 사용하여 파일을 열 수 있습니다.

$subl path/filename

가상 머신이 있고 로컬과 가상 호스트 모두에 동일한 코드가 있지만 경로는 다릅니다.

D:\work (in win)
/home/work/ (in the server)

만약 내가한다면:

$ ssh [email protected] 'find . -type f -name example.txt'

알겠습니다. /home/work/public/example.txt 하지만 숭고한 내용으로 여는 데 사용할 수는 없습니다.

subl $(ssh [email protected] 'find /home/work -type f -name example.txt') //doesn't work

따라서 /home/work에서 시작하는 경로만 있으면 됩니다.public/example.txt (or ./public/example)

find을 사용하여 시작점에서 경로를 어떻게 얻을 수 있습니까 ?

답변1

.문제가 없다고 말했으므로 먼저 디렉토리로 CD를 이동할 수 있습니다.

(cd somedir && find . [...])

%PGNU find를 사용하면 형식 지정자를 사용할 수도 있습니다 .

find somedir -printf '%P\n'  # \0 is safer if you can interpret nulls as delim

에서 man find:

%P: 파일명과 파일이 발견된 시작점의 이름이 삭제되었습니다.

답변2

해결책은 "쉬움"입니다. 집으로 가는 경로를 표시한 다음 문자열에서 텍스트를 제거하는 ~데만 사용하면 됩니다 .sed

find . -type f -name file | sed "s+$(echo ~)++"

$(echo ~)결과 echo ~는 /집/직장입니다

Linux에게 문자열에서 변수를 찾아야 한다고 말하는 "대신 다음을 사용해야 합니다.'

경로 문제를 피하기 위해 /(더 일반적으로 사용됨) 대신 +를 사용합니다.

sed 's//home/work//' cause problems
sed 's+/home/work++' doesn't

관련 정보