62

eclipse や textmate などのエディター/IDE には、プロジェクト ディレクトリ内の特定のファイルをすばやく見つけるためのショートカットがあります。

bashまたは他のシェルで、ディレクトリ内のファイル名のフルパス補完を(再帰的に)行う同様のツールはありますか?

私は多くのディレクトリを持つプロジェクトを持っており、その中に深いものがあります(ため息、Java)。シェルでタブを押すと、直接のディレクトリ内のファイルのみが循環します。それだけでは十分ではありません =/

4

8 に答える 8

85
find /root/directory/to/search -name 'filename.*'
# Directory is optional (defaults to cwd)

標準の UNIX グロビングがサポートされています。詳細については、を参照man findしてください。

Vim を使用している場合は、次を使用できます。

:e **/filename.cpp

または:tabn、ファイル名を受け入れる任意の Vim コマンド。

于 2009-03-18T02:17:18.457 に答える
13

ファイルのリストで何かをしようとしている場合は、find を bash$()構造と組み合わせて使用​​できます (ネストが許可されているため、バッククォートよりも優れています)。

たとえば、プロジェクト ディレクトリの最上位にいて、「btree」で始まるすべての C ファイルのリストが必要だとします。コマンド:

find . -type f -name 'btree*.c'

それらのリストを返します。しかし、これは彼らと何かをするのに実際には役に立ちません。

さらに、これらすべてのファイルで文字列 "ERROR" を検索するか、それらすべてを編集するとします。次のいずれかを実行できます。

grep ERROR $(find . -type f -name 'btree*.c')
vi $(find . -type f -name 'btree*.c')

これをする。

于 2009-03-18T03:45:51.083 に答える
3

私が UNIX の世界にいたとき (tcsh を使用して (ため息...))、ファイルを検索するためにあらゆる種類の「検索」エイリアス/スクリプトをセットアップしていました。デフォルトの「find」構文は少し扱いに​​くいと思うので、「find . -print」を grep にパイプするためのエイリアス/スクリプトを使用していました。これにより、検索に正規表現を使用できます。

# finds all .java files starting in current directory
find . -print | grep '\.java'

#finds all .java files whose name contains "Message"
find . -print | grep '.*Message.*\.java'

もちろん、上記の例は単純な検索で実行できますが、より具体的な検索が必要な場合は、grep がかなり役立ちます。これは、「find . -print」に再帰するディレクトリが多すぎる場合を除いて、かなりうまく機能します...その後、かなり遅くなります。(たとえば、これをルート "/" から開始することは望ましくありません)

于 2009-03-18T03:41:39.127 に答える
1

このスクリプトを使用しますプロジェクト内のディレクトリ間でファイルをすばやく見つけることができます。検索用に新しいバッファを開いたり閉じたりすることで、Vim のオートコンプリートを利用してうまく機能することがわかりました。また、可能な限りスマートに補完するため、通常は 1 文字か 2 文字を入力するだけで、プロジェクト内の任意のディレクトリでファイルを開くことができます。特にJavaプロジェクトのためにそれを使い始めましたが、多くの時間を節約できました. :FC (ディレクトリ名) と入力して編集セッションを開始するときに、キャッシュを 1 回作成するだけです。をそのまま使用することもできます。現在のディレクトリとすべてのサブディレクトリを取得します。その後、単に :FF (または FS と入力して新しい分割を開く) を入力すると、新しいバッファが開き、必要なファイルが選択されます。ファイルを選択すると、一時バッファが閉じ、要求されたファイル内に移動して編集を開始できます。これは、スタックオーバーフローに関する別のリンクです。

于 2009-12-20T11:12:22.007 に答える
0

http://content.hccfl.edu/pollock/Unix/FindCmd.htm

linux/unix の「検索」コマンド。

于 2009-03-18T02:18:25.753 に答える
0

はい、bashファイル名補完メカニズムがあります。私自身はそれらを使用しません (学習するのが面倒くさく、緊急に行うほど頻繁に必要だとは思いません) が、基本的なメカニズムは最初の数文字を入力し、次にタブを入力することです。これにより、名前が明確である限り、可能な限り名前が拡張されます (おそらくまったく拡張されません)。古き良き man ページには、補完に関連する Emacs スタイルのコマンドが山ほどあります。

于 2009-03-18T02:36:43.213 に答える