単語を使ってフォルダの途中で「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自動的に完成します。フィルタリングされたセットのすべてのオプションを表示するには、2回目をクリックしてください。cd this.is.Tab

別の文字を繰り返し入力して範囲を絞り込み、次の Tabあいまいな文字をオートコンプリートし、Tabすべてのオプションを表示できます。


さらに一歩進んで、オートコンプリートbashでワイルドカードを処理できます。上記の最初のケースでは、入力cd D*sしてクリックしてパターンにTab一致する提案を得ることができます。

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

一致する項目が 1 つしかない場合は自動的に完了します。

~ $ 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

おすすめ記事