DOSの「dir / s / b filename」に相当するLinuxは何ですか?


17

「filename」に一致する現在のディレクトリ内または以下のすべてのファイル/ディレクトリをリストします。

回答:


28

直接相当するものは

find . -iname <filename>

<filename>大文字と小文字を区別せずに、現在のディレクトリとサブディレクトリで呼び出されるすべてのファイルとディレクトリをリストします。

findのバージョンがをサポートしていない-iname場合は、-name代わりに使用できます。とは異なり-iname-name大文字と小文字が区別されることに注意してください。

<filename>ディレクトリではなく、というファイルのみを一覧表示する場合は、-type f

find . -iname <filename> -type f

ワイルドカードを使用する場合は、引用符で囲む必要があります。たとえば

find . -iname "*.txt" -type f

そうでない場合、シェルはそれを展開します。

他の人が指摘したように、次のこともできます。

find . | grep "\.txt$"

grep ワイルドカードよりも強力ですが、構文が異なる正規表現に基づいて行を出力します。

man findおよびman grepを参照してください。


3
<filename>ワイルドカードが含まれている場合は、引用符を使用してください(例:)find . -name '*.txt'
ジル 'SO-悪であるのをやめる'

@Gilles、私の答えを更新して、ありがとうございます。
ミケル

2
ユーザー<filename>入力のマーカーとして使用することは、< and >ほとんどの場合特定の意味を持つコマンドライン環境では悪い習慣です。単にfilenameFILENAMEを使用して強調することをお勧めします。ほとんどの人は理解しますが、より少ないかよりも大きい記号を押すべきではないことを理解していない場合、害を及ぼす可能性があります。
ユーザー不明

2
<filename>は多くのUNIXドキュメントの慣習であるため、人々がそれを知っていると便利だと思いFILENAMEますが、理解しやすいかもしれません。
ミケル

1
find -iname <filename>DOSのように大文字と小文字を区別しないので、より良いです
Agnel Kurian 14

8

一部のシェルls **/filenameではが許可されますが、これは非常に便利です。


1
いい視点ね。bashの最近のバージョンでは、実行shopt -s globstar; echo **/filenameはと同等find . -name "filename"です。zshでも動作します。
ミケル

この「ls ** / filename」は問題ありませんが、1つ上のディレクトリレベルよりも深くはないようです。
ソパラホデアリエレス

@ sopalajo-de-arrierezあなたがそうすればshopt -s globstar、おそらくあなたのために働くでしょう。再帰的グロビングは、一部のシェルでのみ使用可能な機能であり、デフォルトではオンにならない場合があります。
ショーンJ.ゴフ

オプス... @ ShawnJ.Goff:shoptコマンドはオプションを有効にしますglobstar on。今ではそれは魅力のように機能します。どうもありがとう。
ソパラホデアリエレス14

4

あなたはこれを行うことができます

find . | egrep filename

1
また、1つでそれを行うこともできますfind . -regextype posix-egrep -regex '.*filename.*'(そのegrep部分が重要かどうかはわかりませんがegrep、回答に使用したので、それを含めました)
Michael Mrozek

可能ですが、grepは同等のDOSコマンドとは異なります。 grep正規表現を使用し、DOSコマンドはシェルワイルドカードを使用します。
ミケル

1
考えてみると、シェルグロブもDOSワイルドカードとは異なります。たとえばfind . -name "*.*"、DOSのバックグラウンドに期待することはできません。グローブは認識できるほど十分に近いですが、正規表現はまったく新しい獣です。
ジャンダー

*.*.*現代のDOS、つまりWindows CMD では何をしますか?どう*.*.*.*
ctrl-alt-delor

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.