2015-02-04 2 views
5

Я хотел бы иметь возможность искать файлы на Windows-машине, используя DOS вместо интерфейса gui. Например, в Linux я использую:DOS эквивалент команды Unix «найти»?

найти. -name "* .c" -exec grep -Hn "sqlcommand" {} \;

Есть ли что-то подобное с ms-dos?

Спасибо.

+0

Я никогда не использовал Windows, серьезно (за исключением просмотра какой-либо карты в отелях), но я слышал, что в Windows есть несколько [PowerShell] (http://en.wikipedia.org/wiki/Windows_PowerShell), которые могут быть более просты в использовании, чем в старой командной строке DOS. Вы можете использовать Windows без использования командной строки DOS. –

+1

Это должно быть задано по адресу http://superuser.com. – sashoalm

+2

Я нашел ответ, который я искал здесь: http://stackoverflow.com/questions/6285148/windows-equivalent-for-unix-find-command-to-search-multiple-file-types – Lambart

ответ

3

После долгого времени, работая с системами Unix я должен был сделать несколько сценариев на Windows. Для серьезных скриптов Powershell - это инструмент, который вы должны использовать. Вы можете искать Интернет с такими ключевыми словами, как powershell find string in file, или другими комбинациями, и вы найдете много информации. Это проблема, простой Oneliner как

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

не поможет вам много. Вам нужно найти PowerShell IDE, изучить различный синтаксис и попытаться любить/принимать новые вещи.

Подготовка к исследованию с помощью PowerShell, если вы хотите, чтобы сделать эти вещи более часто, или попытаться получить Unix-подобную среду на ваших окнах (Cygwin, или лучше мерзавец для окон)

1

В DOS есть команда FIND, но она работает немного иначе, чем find в оболочке Linux.

Синтаксис: FIND [/V] [/C] [/N] [/I] "string" [[drive:][path]filename[...]]

Где:

/V Отображает все строки, не содержащие указанную строку.

/C Отображает только количество строк, содержащих строку.

/N Отображает номера строк с отображаемыми линиями.

/I Игнорирует регистр символов при поиске строки.

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

+2

Но это 'FIND' больше похожа на Linux 'fgrep' –

2

Это требует сочетания двух DOS команд:

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

    и

  • DIR /B /O:N /W *.c (это 'command' отмечено в команде FOR выше)

Создайте сценарий CMD следующим образом:

@ECHO OFF 

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

ИЛИ, просто используйте find команду найдено в этом наборе портов команд Unix:

http://unxutils.sourceforge.net/

или

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

(обе ссылки должны быть один и тот же проект)

Смежные вопросы