Linux 터미널은 디렉터리 구조의 파일을 자동 완성할 수 있습니까?

Linux 터미널은 디렉터리 구조의 파일을 자동 완성할 수 있습니까?

정확한 경로를 지정하지 않고 매우 깊은 디렉터리 구조의 파일을 참조하는 방법이 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

또한@사이먼답변 updatedblocate명령이 여러분의 관심을 끌 것입니다. 배포판에 따라 mlocate패키지를 먼저 설치 해야 할 수도 있습니다 .

find대부분의 경우 및 를 서로 바꿔서 사용할 수 있습니다 locate. 그들 사이의 유일한 차이점은 내부적으로 목표를 달성하는 방법이며, 이로 인해 모두 고유한 강점과 약점을 갖게 됩니다. 읽으면 더 많은 것을 배울 수 있습니다비슷한 질문에 대한 이 훌륭한 답변.

관련 정보