2011-01-15 11 views
6

ディレクトリを再帰的に検索して特定の拡張子ではないファイルを見つけるか、特定の拡張子セットを持たないファイルを探したい。Windows CMD:dirとsubdirのファイルを指定した拡張子なしで一覧表示する

スケッチ: "EXT1" なし "DIR" 内のすべてのファイルを見つけ、 "EXT2"、 "EXT3" と印刷結果

を.txtに私はDIRとATTRIBと周りにいくつかの時間を試してみましたが、残念ながらなしより大きな成功。

あなたの配慮が高く評価されています!ありがとう。あなただけのファイルを与え、/a-dスイッチ除外ディレクトリ

dir /b /s /a-d | findstr /vi ".ext1$ .ext2$ .ext3$" 

+0

cygwinをインストールして、 '見つける'。 –

+5

cygwinをインストールしますか?あなたは狂っていますか、それはまれな問題に対する真の解決策です。より多くのツールが必要な場合は、ネイティブなもの(GnuWin32など)が重要です。これは例えばgrepの1つのライナーです。そして、LittleBobbyTablesが指摘したように、それはcmdインタプリタによってネイティブに行うことができます。 –

+0

@David:ネイティブではありませんが、ほとんどのツールが利用できます( 'findstr'は' cmd'の組み込みコマンドではなく 'dir'です)。しかし、これにcygwinをもたらす狂気に同意しました。 – Joey

答えて

10

はこれを試してみてください。 findstrパラメータではファイルの文字列を検索でき、/viスイッチは次のパラメータを含むファイルを除外することを示します。検索では大文字と小文字を区別しません。

Joeyが指摘したように、$は行末を示すために必要です。

+1

+1すてきで上品な解決策です。ただし、ユーザには注意してください:もしあなたが選択したOEMキャラクタセットで表現できないUnicodeファイル名を持っていて、 'cmd'でRasterフォントを有効にしていれば、これはファイル名を変更します。 。 – Joey

+0

もう一つの副作用:これは拡張子をフィルタリングしませんが、ファイル名の部分文字列はフィルタリングしません。したがって、 'foo.ext1.bar'という名前のファイルがあれば、それも除外されます。 – Joey

+0

それは絶対に魅力のように働く。正確に私が探していた表現。 thxそんなに。 – DapperDan

関連する問題