2015-02-04 17 views
5

Mi piacerebbe essere in grado di cercare i file su una macchina Windows usando DOS invece dell'interfaccia gui. Per esempio, su Linux, io uso:Equivalente DOS del comando "trova" di Unix?

trovare. -name "* .c" -exec grep -Hn "sqlcommand" {} \;

C'è qualcosa di simile con ms-dos?

Grazie.

+0

ho mai usato seriamente di Windows (tranne che per cercare qualche mappa negli hotel), ma ho sentito che Windows aveva alcuni [PowerShell] (http://en.wikipedia.org/wiki/Windows_PowerShell) che potrebbero essere più facili da usare rispetto alla vecchia riga di comando DOS. È possibile utilizzare Windows senza utilizzare una riga di comando DOS. –

+1

Questo dovrebbe essere richiesto su http://superuser.com. – sashoalm

+2

Ho trovato la risposta che cercavo qui: http://stackoverflow.com/questions/6285148/windows-equivalent-for-unix-find-command-to-search-multiple-file-types – Lambart

risposta

3

Dopo molto tempo a lavorare con sistemi Unix ho dovuto fare alcuni script su Windows. Per gli script gravi, Powershell è lo strumento da utilizzare. Puoi cercare su Internet con parole chiave come powershell find string in file, o altre combinazioni e troverai molte informazioni. Questo è il problema, un semplice oneliner come

get-childitem C:\yourdir -include *.c -recursive |Select-String -pattern sqlcommand 

non vi aiuterà molto. Devi trovare l'IDE di PowerShell, imparare la sintassi diversa e provare ad amare/accettare quella nuova roba.

Preparati per uno studio con PowerShell quando si vuole fare queste cose il più delle volte, o cercare di ottenere un ambiente Unix-like sulle vostre finestre (cygwin, o meglio git per Windows)

1

C'è un comando FIND anche in DOS, ma funziona in modo leggermente diverso da find nella shell di Linux.

Sintassi: FIND [/V] [/C] [/N] [/I] "string" [[drive:][path]filename[...]]

Dove:

/V di visualizzare tutte le righe che non contengono la stringa specificata.

/C Visualizza solo il numero di righe contenenti la stringa.

/N Visualizza i numeri di riga con le linee visualizzate.

/I Ignora il caso dei caratteri durante la ricerca della stringa.

https://en.wikipedia.org/wiki/Find_%28command%29

+2

Ma che "TROVA" è più simile a Linux 'fgrep' –

2

Ciò richiede una combinazione di due DOS comandi:

  • FOR /F ["options"] %variable IN ('command') DO command [command-parameters]

    e

  • DIR /B /O:N /W *.c (questo è il 'command' rilevato nel comando FOR sopra)

Creare uno script CMD come segue:

@ECHO OFF 

FOR /F %%B IN ('DIR /B /O:N /W *.cs') DO (
    findstr /I /N /C:"sqlcommand" %%B 
) 

O, basta usare il comando find trovato in questo insieme di porti comando UNIX:

http://unxutils.sourceforge.net/

oppure

http://sourceforge.net/projects/unxutils/

(entrambi i collegamenti dovrebbero essere lo stesso progetto)

Problemi correlati