@DevSolar dapatkah Anda memeriksa kembali perintah Anda? Saya sudah mengujinya pada Windows 5.1 Build 2600 SP3, dan perintah Anda hanya memberi saya daftar file di direktori c:
JohannesM
1
Uh ... maaf. Melayani saya untuk mengetik dari memori. dir /s C:\example.txtini.
DevSolar
1
untuk hasil yang paling mirip saya gunakan \buntuk 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 dirselalu mengembalikan daftar jalur absolut, sedangkan findselalu memberikan jalur diawali dengan<folder>
Hashbrown
28
The Find-ChildItemCmdlet pada Windows Powershell adalah setara dengan Unix / Linux perintah find
Terima kasih. Ini jelas lebih mengingat apa yang saya cari dalam menjawab pertanyaan ini.
supercheetah
7
Find-ChildItembukan 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.
walen
19
Tanpa cmdlet tambahan terpasang, Anda cukup menggunakan Get-ChildItem:
Dalam hal ini Anda mungkin ingin menggunakan salah satu alias pendek dir, lsatau gci, kecuali Anda menulis skrip.
Swonkie
5
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 -likepilihan memungkinkan Anda untuk menggunakan wildcard untuk pencocokan pola.
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 .
Cari -exec grep {} dari UnixUtils tidak berfungsi dengan baik sepertinya "tidak ada file atau direktori". Solusi ini: PowerShell.exe -Command "dir -Recurse -ea 0 |? FullName-like '* .log' | sls error", dari dalam skrip batch berfungsi. Catatan: harus menggunakan tanda kutip tunggal di dalam, tanda kutip ganda di luar.
Jawaban:
- alternatif -
contoh
- alternatif -
sumber
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>
. Misalnyafind /tmp -name *.txt
->dir \s \b C:\temp\*.txt
. Namundir
selalu mengembalikan daftar jalur absolut, sedangkanfind
selalu memberikan jalur diawali dengan<folder>
The
Find-ChildItem
Cmdlet pada Windows Powershell adalah setara dengan Unix / Linux perintah findhttp://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
cmdletsumber
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 UNIXfind
.Tanpa cmdlet tambahan terpasang, Anda cukup menggunakan
Get-ChildItem
:sumber
dir
,ls
ataugci
, kecuali Anda menulis skrip.Jika Anda menggunakan find Unix untuk mencari file dalam hierarki direktori, maka cara Powershell adalah dengan menggunakan
Get-ChildItem
(alias adalahgci
) cmdlet dan memfilter hasilnya dengan cmdletWhere-Object
(aliaswhere
) cmdlet.Misalnya, untuk menemukan semua file (mulai dari
C:\Users\
dan secara rekursif) dengan kata 'esensial' dalam namanya, gunakan yang berikut ini:The
-like
pilihan memungkinkan Anda untuk menggunakan wildcard untuk pencocokan pola.sumber
Yang ini bukan GNU find, tetapi lebih cocok dengan linux command line philisophy di bawah PowerShell:
Contoh:
Catatan: Semuanya dikembalikan setelah "|% FullName" adalah string, bukan objek.
Anda juga dapat menggunakan Where Operator, "?", Namun, ini lebih berfungsi, dan tidak jauh lebih cepat:
Berikut ini jalan pintas cepat:
sumber