Apa yang setara dengan perintah Unix find di Windows?
Saya melihat bahwa find.exe
pada Windows lebih seperti grep
. Saya terutama tertarik pada yang setara
find . -name [filename]
Apa yang setara dengan perintah Unix find di Windows?
Saya melihat bahwa find.exe
pada Windows lebih seperti grep
. Saya terutama tertarik pada yang setara
find . -name [filename]
Jawaban:
dir <drive: [drive:]> /s | findstr /i <pattern>
- alternatif -
dir /s <drive:>\<pattern>
dir c: d: /s | findstr /i example.txt
- alternatif -
dir /s c:\example.txt
dir c: /s example.txt
bekerja juga.
dir /s C:\example.txt
ini.
\b
untuk singkat (jalur keluaran saja); find <folder> -name <pattern>
-> dir /s /b <folder><pattern>
. Misalnya find /tmp -name *.txt
-> dir \s \b C:\temp\*.txt
. Namun dir
selalu mengembalikan daftar jalur absolut, sedangkan find
selalu memberikan jalur diawali dengan<folder>
The Find-ChildItem
Cmdlet pada Windows Powershell adalah setara dengan Unix / Linux perintah find
http://windows-powershell-scripts.blogspot.in/2009/08/unix-linux-find-equivalent-in.html
Beberapa Opsi 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
Pengungkapan: Saya adalah pengembang Find-ChildItem
cmdlet
Find-ChildItem
bukan cmdlet resmi dan tidak termasuk dalam PowerShell; Anda harus mengunduh cmdlet ini dari OneDrive seseorang . Tidak ada perbedaan antara itu dan hanya mengunduh bash, cygwin, unixutils atau program lain yang hanya memungkinkan Anda menjalankan UNIX find
.
Tanpa cmdlet tambahan terpasang, Anda cukup menggunakan Get-ChildItem
:
Get-ChildItem -Filter *.zip -Recurse $pwd
dir
, ls
atau gci
, kecuali Anda menulis skrip.
Jika Anda menggunakan find Unix untuk mencari file dalam hierarki direktori, maka cara Powershell adalah dengan menggunakan Get-ChildItem
(alias adalah gci
) cmdlet dan memfilter hasilnya dengan cmdlet Where-Object
(alias where
) cmdlet.
Misalnya, untuk menemukan semua file (mulai dari C:\Users\
dan secara rekursif) dengan kata 'esensial' dalam namanya, gunakan yang berikut ini:
PS> gci -Path "C:\Users\" -Recurse | where {$_.Name -like '*essential*'}
The -like
pilihan memungkinkan Anda untuk menggunakan wildcard untuk pencocokan pola.
Yang ini bukan GNU find, tetapi lebih cocok dengan linux command line philisophy di bawah PowerShell:
PS> dir -recurse -ea 0 | % FullName | sls <grep_string>
Contoh:
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
Catatan: Semuanya dikembalikan setelah "|% FullName" adalah string, bukan objek.
Anda juga dapat menggunakan Where Operator, "?", Namun, ini lebih berfungsi, dan tidak jauh lebih cepat:
PS> cd C:\
PS> dir -Recurse -ea 0 | ? FullName -like "*Program*"
| ? FullName -like "*Microsoft*"
| % FullName
| out-gridview
Berikut ini jalan pintas cepat:
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 .