WindowsでのUnix find コマンドに相当するものは何ですか?
find.exe
Windowsでは、grep
に似ています。私は特に同等のものに興味があります
find . -name [filename]
dir <drive: [drive:]> /s | findstr /i <pattern>
-代替-
dir /s <drive:>\<pattern>
dir c: d: /s | findstr /i example.txt
-代替-
dir /s c:\example.txt
Windows PowershellのFind-ChildItem
コマンドレットは、Unix/Linuxのfindコマンドに相当します
http://windows-powershell-scripts.blogspot.in/2009/08/unix-linux-find-equivalent-in.html
一部のFind-ChildItemオプション
Find-ChildItem -Type f -Name ".*.exe"
Find-ChildItem -Type f -Name "\.c$" -Exec "Get-Content {} | Measure-Object -Line -Character -Word"
Find-ChildItem -Type f -Empty
Find-ChildItem -Type f -Empty -OutObject
Find-ChildItem -Type f -Empty -Delete
Find-ChildItem -Type f -Size +9M -Delete
Find-ChildItem -Type d
Find-ChildItem -Type f -Size +50m -WTime +5 -MaxDepth 1 -Delete
開示:私はFind-ChildItem
コマンドレットの開発者です
追加のコマンドレットがインストールされていない場合は、単にGet-ChildItem
:
Get-ChildItem -Filter *.Zip -Recurse $pwd
Unixの検索を使用してディレクトリ階層内のファイルを検索している場合、Powershellの方法はGet-ChildItem
(エイリアスはgci
)コマンドレットを使用し、Where-Object
(エイリアスはwhere
)コマンドレットです。
たとえば、名前に「必須」という単語が含まれるすべてのファイル(C:\Users\
から始まり、再帰的に)を検索するには、次のようにします。
PS> gci -Path "C:\Users\" -Recurse | where {$_.Name -like '*essential*'}
-like
オプションを使用すると、パターンマッチングにワイルドカードを使用できます。
これは正確には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 .