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 . [...])
%P
GNU 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