ファイルシステム内のファイルの場所を見つけたいです(ファイル名は部分的に知られています)。 GUIユーティリティを使用する代わりに、コマンドラインでこれを行う方法を知りたいです。
Windows では、次のコマンドを実行します。
cd /d C:\
dir *filename* /s
Linuxと同等のものは何ですか?
ベストアンサー1
locate filename
find -name '*filename*'
echo **/*filename*
ls -ld **/*filename*
(主な利用規約を読み続けてください。パンフレットにある小さな文字も読んでください。)
ディレクトリの内容をリストすることは、.ls
の主なタスクls
(複雑さの大部分を占めるタスク)の表示を微調整することです。 (マニュアルを確認し、表示するファイルの選択に関連するオプションの数と、各ファイルに表示される情報と表示形式を制御するオプションの数とを比較します。両方とも正確です。GNU言語Linuxで見つけることができ、その他システムにはオプションが少なくなります。早い空。 )
デフォルトモードは、ls
ディレクトリを渡すとそのディレクトリのファイルが一覧表示されます。他の種類のファイル(通常のファイル、シンボリックリンクなど)を渡すと、そのファイルのみが一覧表示されます。 (これは各パラメータに個別に適用されます。)このオプションは、ディレクトリを入力しないように指示し-d
ます。ls
ls
-R
実際にディレクトリを再帰的にリストするように指示するオプションがあります。ただし、適用性は限られており、出力を多くフィルタリングすることはできません。
パターンマッチングを実行する最初のツールはシェル自体です。他のコマンドは必要ありません。ワイルドカードのみを入力すると設定が完了します。これは…ワイルドカード。
echo *filename*
従来、ワイルドカードは現在のディレクトリ(または次に示すディレクトリ)に制限されていましたecho /some/where/*filename*
。 Aは、*
すべてのファイル名またはファイル名の一部と一致しますが*.txt
。最新のシェルには、「このディレクトリまたはその下のディレクトリに(再帰的に)」を意味するfoo/bar.txt
パターンが追加されました。**/
Bashの場合、この機能は記録互換性の理由で明示的に有効にする必要がありますshopt -s globstar
(この行を~/.bashrc
。
echo **/*filename*
このecho
コマンドは、単にシェルによって生成されたファイル名のリストをユーザーに再表示します。例外的に、一致するファイル名がまったくない場合、bashのワイルドカードパターンは変更されずに保持され(設定されていない限り、shopt -s nullglob
パターンは空のリストに展開されます)、zshはエラー信号を送信します(設定しない限りsetopt nullglob
、またはsetopt no_no_match
これをスキーマが変更されていないままになります)。
それでもそのオプションを使用できますls
。たとえば、ls
色を使用してファイル(ディレクトリ、実行可能ファイルなど)の性質または権限を表すことができます。 .txtを使用してファイルの日付、サイズ、および所有権を表示できますls -l
。その他のオプションについては、マニュアルを参照してください。
ディレクトリツリーでファイルを検索する従来のコマンドは次のとおりです。find
。表示されるファイルと処理方法を制御するためのさまざまなオプションを提供します。たとえば、*filename*
現在のディレクトリとそのサブディレクトリで、名前がパターンと一致するファイルを見つけてその名前を印刷するには、次の手順を実行します。
find /some/dir -name '*filename*' -print
-print
ジョブです(他のほとんどのジョブにはファイルに対するコマンドの実行が含まれます)。-print
何もしないと暗示されます。また、トラバースするディレクトリを指定しないと(/some/dir
上)、現在のディレクトリが暗示されます。この条件は、-name '*filename'
名前がこのパターンと一致するファイルのみをリスト(またはアクション)することを意味します。-mtime -1
過去24時間以内に変更されたファイルと一致するなど、他の多くのフィルタがあります。場合によっては引用符を省略できますが、-name '*filename*'
ワイルドカードが現在のディレクトリ内のどのファイルとも一致しない場合にのみ可能です(上記を参照)。全体として、略語は次のとおりです。
find -name '*filename*'
ファイル名(一部)がわかっている場合は、別の便利なツールはlocate
ファイル名データベースを照会することです。一般的なシステムでは、毎晩更新されます。locate
overの利点find /
ははるかに高速です。欠点は、その情報が古い可能性があることです。いくつかの実装があり、locate
マルチユーザーシステムでは異なる動作をします。プライマリプログラムは一般に読めるファイルのみをインデックス化します(アカウント内のすべてのファイルをインデックス化するには、locate
セカンダリプログラムを実行する必要があります)。updatedb
すべてのファイルをインデックス化し、プログラムがデータベースlocate
をフィルタリングして表示できるファイルのみを返すようにするバージョン(mlocate、slocate)。
locate filename
時々、あなたはディストリビューションのパッケージでファイルが提供されていると思い、ファイル名(いくつか)を知っていますが、パッケージ名はわからず、そのパッケージをインストールしようとしています。多くのディストリビューションはこれに役立つツールを提供しています。 Ubuntuでは、他のシステムに対応するコマンドがあることをapt-file search filename
確認してください。パックマンロゼッタ。