web-dev-qa-db-ja.com

WindowsでのUnixのfindコマンドに相当

WindowsでのUnix find コマンドに相当するものは何ですか?

find.exe Windowsでは、grepに似ています。私は特に同等のものに興味があります

find . -name [filename]
39
ARV
dir <drive: [drive:]> /s | findstr /i <pattern>

-代替-

dir /s <drive:>\<pattern>

dir c: d: /s | findstr /i example.txt

-代替-

dir /s c:\example.txt
23
JohannesM

Windows PowershellのFind-ChildItemコマンドレットは、Unix/Linuxのfindコマンドに相当します

http://windows-powershell-scripts.blogspot.in/2009/08/unix-linux-find-equivalent-in.html

一部のFind-ChildItemオプション

  1. Find-ChildItem -Type f -Name ".*.exe"
  2. Find-ChildItem -Type f -Name "\.c$" -Exec "Get-Content {} | Measure-Object -Line -Character -Word"
  3. Find-ChildItem -Type f -Empty
  4. Find-ChildItem -Type f -Empty -OutObject
  5. Find-ChildItem -Type f -Empty -Delete
  6. Find-ChildItem -Type f -Size +9M -Delete
  7. Find-ChildItem -Type d
  8. Find-ChildItem -Type f -Size +50m -WTime +5 -MaxDepth 1 -Delete

開示:私はFind-ChildItemコマンドレットの開発者です

28
Jagadish G

追加のコマンドレットがインストールされていない場合は、単にGet-ChildItem

Get-ChildItem -Filter *.Zip -Recurse $pwd
25
djhaskin987

Unixの検索を使用してディレクトリ階層内のファイルを検索している場合、Powershellの方法はGet-ChildItem(エイリアスはgci)コマンドレットを使用し、Where-Object(エイリアスはwhere)コマンドレットです。

たとえば、名前に「必須」という単語が含まれるすべてのファイル(C:\Users\から始まり、再帰的に)を検索するには、次のようにします。

PS> gci -Path "C:\Users\"  -Recurse | where {$_.Name -like '*essential*'}

-likeオプションを使用すると、パターンマッチングにワイルドカードを使用できます。

6
Joshua Kan

これは正確にはGNU findではありませんが、Powershellの下のLinuxコマンドラインの哲学とより厳密に一致します。

PS> dir -recurse -ea 0 | % FullName | sls <grep_string>

例:

PS> cd C:\
PS> dir -recurse -ea 0 | % FullName | sls "Program" | sls "Microsoft"
PS> dir -recurse -ea 0 | % FullName | sls "Program" | sls "Microsoft" | out-gridview

注: "|%FullName"の後に返されるものはすべて、オブジェクトではなく文字列です。

Where演算子 "?"を使用することもできますが、その方が作業は多く、それほど高速ではありません。

PS> cd C:\
PS> dir -Recurse -ea 0 | ? FullName -like "*Program*" 
                       | ? FullName -like "*Microsoft*" 
                       | % FullName 
                       | out-gridview

ここに簡単なショートカットがあります:

PS> function myfind {dir -recurse -ea 0 | % FullName | sls $args }

PS> cd C:\
PS> myfind "Programs" | sls "Microsoft"

#find all text files recursively from current directory
PS> myfind "\.txt$"

#find all files recursively from current directory
PS> myfind .
2
Bill Moore