jangan bingung ms-dos dengan command prompt. + Penggunaan find dan findstr dan bahkan grep, untuk windows .. pasti mudah ditemukan dengan pencarian cepat. bahkan ada tabel perintah setara di linux dan windows. Anda juga contoh bash bahkan tidak spesifik untuk bash .. hanya saya kira, * nix OS.
barlop
Jawaban:
280
Findstr terdengar seperti apa yang Anda inginkan. Saya menggunakannya sepanjang waktu sebagai perkiraan setara grep pada platform Windows.
Ya, itulah yang saya cari. Saya mengerti mungkin ada keterbatasan. Saya akan mencobanya.
chrisjlee
18
kenapa mereka tidak bisa menyebutnya grep!
Victor Grazi
6
@ ViktorGrazi Mereka benar-benar melakukannya pada awalnya, lihat artikel ini . Awalnya bernama qgrep - tetapi kemudian diganti namanya.
Zitrax
3
Masalah besarnya findstradalah bahwa pola regex mungkin tidak mengandung alternatif.
Wolf
Pertanyaannya adalah tentang Windows 7, tetapi versi Windows apa yang findstrsecara default dimiliki ? Sejak Windows XP ?
Peter Mortensen
44
Ada beberapa kemungkinan:
Gunakan port dari grepperintah Unix . Ada beberapa pilihan. Yang disebutkan di atas adalah GNUWin32 , cygwin , dan unxutils . Yang kurang terkenal, tetapi dalam beberapa hal lebih baik, adalah alat-alat dalam toolkit utilitas SFUA , yang berjalan di Subsistem untuk Aplikasi berbasis UNIX yang hadir di sana dalam kotak dengan Windows 7 Ultimate edition dan Windows Server 2008 R2. (Untuk Windows XP, seseorang dapat mengunduh dan menginstal Layanan untuk UNIX versi 3.5 .) Toolkit ini memiliki sejumlah besar alat TUI baris perintah, dari mvdan du, melalui cangkang Korn dan C, ke perldanawk. Muncul dalam rasa x86-64 dan IA64 serta x86-32. Program-program berjalan di lingkungan POSIX asli Windows yang asli, daripada dengan emulator DLL (seperti cygwin1.dll) meletakan sesuatu di atas Win32. Dan ya, toolkit ini memiliki grep, serta sekitar 300 lainnya.
cygwin bekerja dengan baik untuk saya di Win 7. Saya butuh grep dan GnuWin32 grep tidak bekerja untuk saya.
Kozuch
Anda menulis, saya tidak melihat perl di SUA C: \ Windows \ SUA> dir perl * / s / b File Tidak Ditemukan dan dijalankan misalnya c shell dari SUA Saya tidak melihatnya di / bin
barlop
Anda juga menulis bahwa SFUA dalam beberapa hal lebih baik. Dalam hal apa?
barlop
@Kozuch kecuali Anda menyatakan bagaimana itu tidak berhasil, maka komentar Anda tidak berguna
barlop
19
Jika perintah PowerShell diizinkan, gunakan
PS C:\> Get-ChildItem | Select-String root
atau pendek
PS C:\> ls | sls root
Ketahuilah bahwa alias slshanya didefinisikan diawali dengan PowerShell versi 3.0. Anda dapat menambahkan alias untuk kurang mengetik:
PS C:\> New-Alias sls Select-String
Untuk menjalankan perintah PowerShell langsung dari cmd, gunakan
Dalam revisi awal Anda, Anda menulis MS-DOS, hanya ada FIND, sejauh yang saya tahu. Tapi ini adalah OS kuno yang tidak digunakan lagi.
Pada prompt perintah Windows NT (mis. Win2K dan win XP dan yang lebih baru, jadi mis. Win7, win10), Anda dapat menggunakan finddan findstrdan jika Anda mengunduh GnuWin32 makagrep
Perbedaan mendasar adalah bahwa findstr memiliki beberapa dukungan ekspresi reguler . Grep mendukung ekspresi reguler terbaik.
C:\>dir | find "abc"
C:\>dir | find /i "abc"
find /?dan findstr /?menunjukkan kepada Anda apa yang dilakukan sakelar.
Gnuwin32 memiliki "paket". Jika Anda mengunduh GnuWin32, saya sarankan paket coreutils untuk sekumpulan utilitas berguna dasar yang akan Anda kenal, tetapi grep tidak memilikinya dengan paket itu sendiri.
Ditambahkan
Grep GnuWin32, terakhir kali saya periksa, sudah tua. Grep Cygwin jauh lebih terkini. Juga ingat bahwa banyak orang menggunakan Mesin Virtual daripada port windows dari perintah * nix.
Jika Anda lebih suka menggunakan grep, daripada findstr, ada .exeversi file tunggal di UnxUtils , jadi ini portabel dan tidak perlu menginstalnya, atau menggunakan sesuatu seperti Cygwin.
@userunknown dengan baik, sebagai contoh, perintah sed unxutils lebih tua dan tidak mendukung \ d misalnya \ d22 untuk menentukan kutipan. Wget yang lebih tua mungkin tidak mengunduh halaman yang lebih baru, dan jika Anda meminta dukungan, mereka mungkin meminta Anda mendapatkan yang terbaru karena dapat menyelesaikan beberapa masalah. Grep yang benar-benar tua tidak diragukan lagi tidak akan memiliki tingkat dukungan regex yang dimiliki saat ini
barlop
3
Anda dapat mencoba menginstal Chocolatey di Windows, dan melalui itu, instal alat Gow . Ini akan memberi Anda greppada Windows.
Gowberdiri untuk GNU di Windows. Ini memberikan utilitas baris perintah Unix pada Windows.
Ini adalah manajer paket, seperti apt-get tetapi untuk windows. Itu mendapat namanya karena pengembang berdasarkan dari NuGet yang merupakan manajer paket untuk studio visual, dan itu terdengar seperti nugget (seperti pada nugget ayam), jadi dia pikir dia akan "lucu" atau "pintar" dan memanggil programnya Chocolatey NuGet. Saya mendengar itu di podcast yang mewawancarainya. Gow juga dapat diunduh secara mandiri
barlop
1
Saya baru mengenal Gow, setelah beberapa hari penggunaan, saya dapat bersaksi bahwa saya sangat menyukainya - ini lebih baik daripada semua port lama dari utilitas UNIX yang telah saya gunakan sebelumnya.
Radim Cernej
@RadimCernej komentar Anda tidak berguna kecuali Anda menyatakan bagaimana menurut Anda itu lebih baik.
barlop
@barlop: Sejak saya menulis komentar Jan-2016 saya secara bertahap dan sepenuhnya beralih ke Gow. Sejauh ini tidak ada bug, ia memiliki semua utilitas yang saya butuhkan / gunakan, path adalah output dalam format Microsoft (membuatnya mudah untuk menyalin / menempel ke program lain). Gow cukup non-invasif (mudah dipasang dan dihapus) sehingga saya sangat menyarankan Anda mengujinya.
Radim Cernej
2
Penggunaan bash
$ ls | grep root
Cmd digunakan
> dir /b | findstr root
di mana /bsingkatan b adalah daftar direktori dan file
Ini menggandakan jawaban lain dan tidak menambahkan konten baru. Tolong jangan memposting jawaban kecuali Anda benar-benar memiliki sesuatu yang baru untuk disumbangkan.
DavidPostill
@DavidPostill: Ini adalah solusi cepat untuk pengguna "TL; DR" (seperti saya)
vladkras
Itu bukan alasan untuk menambahkan jawaban yang tidak menyumbangkan sesuatu yang baru. Bagaimanapun jawaban yang diterima akan selalu muncul terlebih dahulu sehingga akan dibaca sebelum Anda.
DavidPostill
@DavidPostill, jangan pedulikan, tetapi jawaban yang diterima berisi beberapa kunci yang berlebihan dan tidak dapat dijelaskan/B , /Rdan /COP tidak bertanya, sedangkan jawaban saya memberikan padanan yang tepat
vladkras
The /badalah untuk membuat diroutput yang sama dengan lsoutput. Jika Anda mengujinya, Anda akan melihat perbedaannya. Jadi itu tidak setara persis.
DavidPostill
2
Saya menulis alternatif Windows untuk grep menggunakan kode Hybrid Batch / JScript. Saya menulis ini karena mendapatkan karakter escape tepat di port grep GNU Win32 benar-benar menyebalkan. Versi ini bekerja lebih seperti bagaimana Anda ingin versi GNU berfungsi di Windows:
Program multi replacer telah disiapkan sehingga banyak fungsi dapat dilakukan dengan menggunakan parameter baris perintah. Penggunaan baris perintah terlihat di bawah:
Anda masih dapat menggunakan grepperintah Linux yang Anda kenal dan yang lainnya dengan mengunduh alat ini UnxUtils dan menambahkan lokasi itu ke PATHvariabel lingkungan Anda
Jika Anda ingin menambahkan yang paling sederhana grepke lingkungan windows Anda, maka navigasikan ke c:\windows\system32dan tambahkan skrip batch kecil dengan menggunakan perintah ini:
echo findstr %1 > grep.bat
Sekarang kamu bisa
dir | grep notepad.exe
yang benar-benar campuran yang menakutkan. Jadi tambahkan skrip batch lain lsseperti yang dijelaskan dalam posting ini
Jawaban:
Findstr terdengar seperti apa yang Anda inginkan. Saya menggunakannya sepanjang waktu sebagai perkiraan setara grep pada platform Windows.
Contoh lain dengan pipa:
sumber
findstr
adalah bahwa pola regex mungkin tidak mengandung alternatif.findstr
secara default dimiliki ? Sejak Windows XP ?Ada beberapa kemungkinan:
grep
perintah Unix . Ada beberapa pilihan. Yang disebutkan di atas adalah GNUWin32 , cygwin , dan unxutils . Yang kurang terkenal, tetapi dalam beberapa hal lebih baik, adalah alat-alat dalam toolkit utilitas SFUA , yang berjalan di Subsistem untuk Aplikasi berbasis UNIX yang hadir di sana dalam kotak dengan Windows 7 Ultimate edition dan Windows Server 2008 R2. (Untuk Windows XP, seseorang dapat mengunduh dan menginstal Layanan untuk UNIX versi 3.5 .) Toolkit ini memiliki sejumlah besar alat TUI baris perintah, darimv
dandu
, melalui cangkang Korn dan C, keperl
danawk
. Muncul dalam rasa x86-64 dan IA64 serta x86-32. Program-program berjalan di lingkungan POSIX asli Windows yang asli, daripada dengan emulator DLL (seperticygwin1.dll
) meletakan sesuatu di atas Win32. Dan ya, toolkit ini memilikigrep
, serta sekitar 300 lainnya.grep
perintah Win32 asli yang telah ditulis dan diterbitkan orang. Tim Charron memiliki versi asli Win32 dari grep GNU yang dimodifikasi , misalnya. Ada juga PowerGREP , Bare Grep , grepWin , AstroGrep , dan dnGrep , meskipun ini semua adalah program GUI bukan program TUI.find
danfindstr
. Sintaksnya berbeda dengangrep
, perhatikan, seperti halnya kemampuan ekspresi reguler.sumber
Jika perintah PowerShell diizinkan, gunakan
atau pendek
Ketahuilah bahwa alias
sls
hanya didefinisikan diawali dengan PowerShell versi 3.0. Anda dapat menambahkan alias untuk kurang mengetik:Untuk menjalankan perintah PowerShell langsung dari cmd, gunakan
sumber
Dalam revisi awal Anda, Anda menulis MS-DOS, hanya ada
FIND
, sejauh yang saya tahu. Tapi ini adalah OS kuno yang tidak digunakan lagi.Pada prompt perintah Windows NT (mis. Win2K dan win XP dan yang lebih baru, jadi mis. Win7, win10), Anda dapat menggunakan
find
danfindstr
dan jika Anda mengunduh GnuWin32 makagrep
Perbedaan mendasar adalah bahwa findstr memiliki beberapa dukungan ekspresi reguler . Grep mendukung ekspresi reguler terbaik.
find /?
danfindstr /?
menunjukkan kepada Anda apa yang dilakukan sakelar.Gnuwin32 memiliki "paket". Jika Anda mengunduh GnuWin32, saya sarankan paket coreutils untuk sekumpulan utilitas berguna dasar yang akan Anda kenal, tetapi grep tidak memilikinya dengan paket itu sendiri.
Ditambahkan
Grep GnuWin32, terakhir kali saya periksa, sudah tua. Grep Cygwin jauh lebih terkini. Juga ingat bahwa banyak orang menggunakan Mesin Virtual daripada port windows dari perintah * nix.
sumber
Jika Anda lebih suka menggunakan
grep
, daripadafindstr
, ada.exe
versi file tunggal di UnxUtils , jadi ini portabel dan tidak perlu menginstalnya, atau menggunakan sesuatu seperti Cygwin.sumber
.zip
file.exe
file. Satu-satunya downside kecil adalah bahwa versi agak lama.grep
untuk Windows: gnuwin32.sourceforge.net/packages/grep.htmAnda dapat mencoba menginstal Chocolatey di Windows, dan melalui itu, instal alat Gow . Ini akan memberi Anda
grep
pada Windows.Gow
berdiri untuk GNU di Windows. Ini memberikan utilitas baris perintah Unix pada Windows.sumber
Penggunaan bash
Cmd digunakan
di mana
/b
singkatan b adalah daftar direktori dan filesumber
/B
,/R
dan/C
OP tidak bertanya, sedangkan jawaban saya memberikan padanan yang tepat/b
adalah untuk membuatdir
output yang sama denganls
output. Jika Anda mengujinya, Anda akan melihat perbedaannya. Jadi itu tidak setara persis.Saya menulis alternatif Windows untuk grep menggunakan kode Hybrid Batch / JScript. Saya menulis ini karena mendapatkan karakter escape tepat di port grep GNU Win32 benar-benar menyebalkan. Versi ini bekerja lebih seperti bagaimana Anda ingin versi GNU berfungsi di Windows:
Anda selalu dapat menemukan versi terbaru di halaman Gist saya untuk ini.
sumber
http://www.multireplacer.com
Program multi replacer telah disiapkan sehingga banyak fungsi dapat dilakukan dengan menggunakan parameter baris perintah. Penggunaan baris perintah terlihat di bawah:
sumber
Anda masih dapat menggunakan
grep
perintah Linux yang Anda kenal dan yang lainnya dengan mengunduh alat ini UnxUtils dan menambahkan lokasi itu kePATH
variabel lingkungan Andasumber
2.4.2
tetapi gnuwin32 memiliki yang lebih baru2.5.4
Saya akan menyarankan menggunakan busybox-w32 , karena hanya berukuran sekitar 500 KB dan dipelihara secara aktif.
Sehingga dalam kasus Anda, di command prompt, itu adalah:
Anda bisa menggunakan
doskey
peluncuran prompt perintah dengan file batch untuk membuat perintah, seperti:Kemudian Anda dapat menggunakan
ls | grep root
command prompt.sumber
Jika Anda ingin menambahkan yang paling sederhana
grep
ke lingkungan windows Anda, maka navigasikan kec:\windows\system32
dan tambahkan skrip batch kecil dengan menggunakan perintah ini:Sekarang kamu bisa
yang benar-benar campuran yang menakutkan. Jadi tambahkan skrip batch lain
ls
seperti yang dijelaskan dalam posting iniSekarang hal-hal terlihat agak akrab
HTH
sumber
Itu akan menjadi setara cepat dan kotor.
sumber