단어를 사용하여 폴더 중간에 "cd"하는 방법은 무엇입니까?

단어를 사용하여 폴더 중간에 "cd"하는 방법은 무엇입니까?

내 작업공간에는 긴 경로로 구성된 많은 폴더가 있습니다. 예를 들어:

|- workspace
|-- this.is.very.long.name.context
|-- this.is.another.long.path.authors
|-- // 20 more folders
|-- this.is.folder.with.too.many.characters.folder

그것들은 모두 동일한 단계( this.is)로 시작합니다. 제 실제 경우에는 길이가 20자이고 마지막 순서가 대부분 다릅니다. cd명령을 사용하여 빠르게 검색할 수 있는 방법이 있나요 ? 이런 엉뚱한 캐릭터도 있나요 ??

답변1

다른 사람을 대변할 수는 없지만(예: zsh) bash와일드카드를 사용하면 어느 정도 작동합니다. 예:

~ $ ls
Documents
Desktop
Downloads

별표( )를 사용하면 *다음을 얻을 수 있습니다.

~ $ cd *ments
~/Documents $

bash이는 명령이 도착하기 전에 대체가 이루어질 수 있기 때문입니다 cd.

여러 일치 항목이 유효한 경우 cd동작이 정의되지 않은 것으로 예상됩니다.

~ $ cd *s
bash: cd: too many arguments

bash이것을 로 확장하면 cd Documents Downloads에는 의미가 없습니다 cd.


bash자동 완성 기능을 사용할 수도 있습니다 . 귀하의 예에서는 cd t; 을 입력하면 클릭 시 다음 모호한 문자가 Tab자동 ​​완성됩니다 . 필터링된 세트의 모든 옵션을 보려면 두 번째 클릭하세요.cd this.is.Tab

다른 문자를 반복적으로 입력하여 범위를 좁히고 Tab다음 모호한 문자를 자동 완성하고 Tab모든 옵션을 볼 수 있습니다.


한 단계 더 나아가 bash자동 완성에서 와일드카드를 처리할 수 있습니다. 위의 첫 번째 경우에는 입력 cd D*s한 다음 클릭하여 Tab패턴과 일치하는 제안을 얻을 수 있습니다.

~ $ cd D*s
Documents/ Downloads/
~ $ cd D*s

일치하는 항목이 하나만 있으면 자동으로 완료됩니다.

~ $ cd *loads
~ $ cd Downloads/

ls문제의 디렉토리에 있는 것이 마음에 들지 않는 경우에도 작동합니다. 내용이 아닌 디렉터리 자체 -d가 나열되어 있음 을 나타냅니다 .ls

$ ls -d *long*
this.is.very.long.name.context
this.is.another.long.path.authors

find또는 재귀적으로 보려면 다음을 사용할 수 있습니다.

$ find workspace -type d -name '*long*'
workspace/this.is.very.long.name.context
workspace/this.is.another.long.path.authors

답변2

s를 사용하면 중간 단어를 완성하도록 zsh완성 시스템을 구성할 수 있습니다 .zstyle

compinstall기능은 그렇게 하는 데 도움이 됩니다. 예를 들어 실행해 보세요 autoload compinstall; compinstall. 처음 사용할 때(아직 메뉴가 없는 경우 ) zsh-newuser-install자주 호출되는 메뉴를 통해서도 사용할 수 있습니다 .zsh.zshrc

               *** compinstall: main menu ***
2.  Matching control: set behaviour for case-insensitive matching,
    extended (partial-word) matching and substring matching.
              *** compinstall: matcher menu ***

`Matchers' compare the completion code with the possible matches in some
special way.  Numbers in parentheses show matchers to be tried and the order.
The same number can be assigned to different matchers, meaning apply at the
same time.  Omit a sequence number to try normal matching at that point.
A `+' in the first line indicates the element is added to preceding matchers
instead of replacing them; toggle this with `t'.  You don't need to set
all four, or indeed any matchers --- then the style will not be set.

   (    )   `+' indicates add to previous matchers, else replace
n. (    ) No matchers; you may want to try this as the first choice.
c. (    ) Case-insensitive completion (lowercase matches uppercase)
C. (    ) Case-insensitive completion (lower/uppercase match each other)
p. (    ) Partial-word completion:  expand 'f.b' to 'foo.bar', etc., in one go.
          You can choose the separators (here `.') used each time.
s. (    ) Substring completion:  complete on substrings, not just initial
          strings.  Warning: it is recommended this not be used for element 1.

그렇게 했다면:

   (    )   `+' indicates add to previous matchers, else replace
n. (1   ) No matchers; you may want to try this as the first choice.
c. (    ) Case-insensitive completion (lowercase matches uppercase)
C. (    ) Case-insensitive completion (lower/uppercase match each other)
p. (    ) Partial-word completion:  expand 'f.b' to 'foo.bar', etc., in one go.
          You can choose the separators (here `.') used each time.
s. ( 2  ) Substring completion:  complete on substrings, not just initial
          strings.  Warning: it is recommended this not be used for element 1.

compinstall저장하고 종료하면 다음 줄이 다음 항목에 추가된 것을 볼 수 있습니다 ~/.zshrc.

zstyle ':completion:*' matcher-list '' '' '' 'l:|=* r:|=*'

info zsh matcher-list(참고: 패키지를 설치해야 할 수도 있음 zsh-doc) 작동 방식을 알려줄 것입니다.

그런 다음 를 입력하면 이름이 로 시작하는 파일이 없다고 가정하고 cd anoTab완료되는 것을 볼 수 있습니다 .this.is.another.long.path.authorsano

compinstall활성화할 수 있는 더 놀라운 기능이 있으므로 모든 메뉴를 살펴보시기 바랍니다 . (같은 zsh-newuser-install).

답변3

필요한 부분만 복사해서 붙여넣으면 됩니다.

답변4

백슬래시를 사용하세요. 이는 컴퓨터가 공백을 문자 그대로 처리하도록 지시하는 이스케이프 문자입니다. 예는 다음과 같습니다.

cd My\ Documents

관련 정보