정확한 경로를 지정하지 않고 매우 깊은 디렉터리 구조의 파일을 참조하는 방법이 Linux 터미널에 있습니까?
qstr.js
예를 들어, 3-4개의 디렉터리 깊이(예: )라는 파일이 있다는 것을 알고 있는 경우 qtools\modules\version001\tests\qstr.js
다음을 입력할 수 있습니까?
cp qs*
그런 다음 전체 경로와 파일 이름을 Tab 키로 입력할 수 있도록 파일을 검색하고 찾으시겠습니까?
Git에는 유사한 기능이 있는데, 이를 통해 디렉터리 깊은 곳에 있는 작업 디렉터리 파일을 참조할 수 있습니다.
답변1
가지다globstar
( **
):
/usr $ shopt -s globstar
/usr $ cp **/firefox*<Tab>
firefox-developer-edition firefox-developer-edition.png firefox-developer-edition.png firefox-developer-edition-symbolic.svg firefox.png
firefox-developer-edition/ firefox-developer-edition.png firefox-developer-edition.png firefox.png firefox.png
firefox firefox-developer-edition.png firefox-developer-edition.png firefox.png
[...]
# a few more <Tab>s later
/usr $ cp share/icons/hicolor/384x384/apps/firefox-developer-edition.png
(후자의 행동필요menu-complete
.)
당신은 사용해 볼 수 있습니다fzf
("명령줄 퍼지 파인더"). 이를 설치하고 bash 완성 및 키 바인딩을 활성화하면 다음 CtrlT메시지가 표시됩니다.
> 파이어폭스 데스크탑 1/722561 > 공유/앱/반딧불이오엑스- 개발자 버전.테이블티작동하다
그런 다음 키를 누르면 Enter선택한 경로가 명령줄에 붙여넣어집니다.
답변2
나는 그것을 find
많이 사용합니다. 아마도 도구를 최대한 활용하지 못할 수도 있지만 파일을 찾는 것만으로도 효과가 있다는 것을 인정합니다 find -name foo
. 단일 대시에 유의하세요. 하위 디렉터리에서만 검색됩니다. find -path
전체 경로 검색을 사용할 수도 있습니다 . 예를 들어, "foo" 폴더에서 "bar.txt" 파일만 찾으려면 다음과 같이 하면 됩니다 find -path */foo/bar.txt
.
답변3
또한@사이먼답변 updatedb
과 locate
명령이 여러분의 관심을 끌 것입니다. 배포판에 따라 mlocate
패키지를 먼저 설치 해야 할 수도 있습니다 .
find
대부분의 경우 및 를 서로 바꿔서 사용할 수 있습니다 locate
. 그들 사이의 유일한 차이점은 내부적으로 목표를 달성하는 방법이며, 이로 인해 모두 고유한 강점과 약점을 갖게 됩니다. 읽으면 더 많은 것을 배울 수 있습니다비슷한 질문에 대한 이 훌륭한 답변.