В настоящее время я использую Git Bash для навигации по файловым каталогам и редактированию файлов. Я хочу знать, есть ли команда поиска текущего каталога и всех каталогов в нем для имени файла.Поиск файлов в терминале Git Bash
ответ
Да, он поставляется с find utility. Для рекурсивного поиска файла с именем «somefile.txt», начиная с текущего рабочего каталога, должно работать:
find . -name somefile.txt
Git Bash является bash
оболочки снизу, а также такие все стандартные Unix утилиты будут доступны. Стандартная find
утилита будет работать нормально:
$ find . -name filename.java
найдет filename.java
в каталог/подкаталогов. Обратите внимание, что вам нужно избегать подстановочных знаков, иначе сама оболочка будет интерпретировать это, например.
$ find . -name \*.java
даст вам все .java
файлы
find
является мощным, но может быть сложным в использовании. Ознакомьтесь с учебным пособием here.
Если вы хотите найти, например, все имена Java файлов, содержащих слово «Test», рекурсивно из текущего каталога, вы можете использовать
git ls-files '*Test*.java'
Чтобы найти все файлы, содержимое которых включает в себя, содержащее слово «FIXME», вы можете использовать
git grep 'FIXME'
вы можете просто запустить эту команду на мерзавец оболочке
находка/-name «имя_файла-вы-хочу-поиск-регулярное выражение разрешенного»
Это будет искать все файлы из корневого акра oss файловая система.
Если вы используете Git Bash для Windows, вполне возможно, что «find» укажет на инструмент «Найти», который поставляется с Windows, а не на тот, который предоставляется Git Bash. Средство поиска Windows использует разные параметры, поэтому приведенные выше ответы не будут работать.
Чтобы убедиться, что вы используете поиск Unix из оболочки Git Bash, введите/bin/find. Теперь будет изменен параметр -name.
Я использую git для Windows и 'find. -name somefile.txt' действительно работает. Например, я пытаюсь найти. -name * .js' и находит все .js-файлы рекурсивно. Сначала потребовалось некоторое время, потому что, я не знаю, Windows? –
У меня было много проблем с неудачным тестом AppVeyor, который использовал 'find' в git bash. Ты спасибо за ответ! Это спасло мой день. 'bin/find' для победы! –
'git' и' bash' - это две совершенно разные вещи. 'bash' - это оболочка Unix (или Linux). 'git' - программа управления исходным кодом программного обеспечения. Как ответили другие, есть команда Unix/Linux 'find', которая делает то, что вы хотите, и она не зависит от' git' и работает в любой доступной оболочке, включая 'bash'. – lurker