у кого-либо есть какие-либо идеи, как сделать это лучше?
Лично я не знаю. Вы упоминаете программы Черепахи, которые делают подобную вещь, таким образом, превосходная начальная точка должна была бы взглянуть на то, что они делают в их источнике:)
Они надеются быть соответствующими исходными файлами, которые решают эту проблему:
- TortoiseCVS - ShellUtils.cpp
- TortoiseSVN - ShellUpdater.cpp (имя пользователя: "гость", пароль: "")
я отмечаю в
RebuildIcons
, метод в каждом из тех будет:
- устанавливает размер значков оболочки или глубину цвета к временной ценности
- обновления все окна путем широковещательной передачи изменения установки
- сброс, размер значков оболочки или глубина цвета к исходному значению
- обновляют все окна во второй раз с широковещательной передачей изменения установки
, Возможно, это - часть приема для получения вещей, работающих в XP.
Просто направьте свой нефильтрованный вывод в один экземпляр grep и используйте расширенное регулярное выражение, чтобы объявить, что вы хотите игнорировать:
grep -Ri 64 src/install/ | grep -v -E '(\.svn|file|2\.5|2\.6)'
Изменить: Для поиска в нескольких файлах попробуйте
find ./src/install -type f -print |\
grep -v -E '(\.svn|file|2\.5|2\.6)' | xargs grep -i 64
Редактировать: Ох. Я забыл добавить простой трюк, чтобы остановить неудобное использование нескольких экземпляров grep, а именно
ps -ef | grep something | grep -v grep
. Замена этого на
ps -ef | grep "[s]omething"
устраняет необходимость во втором grep.
Возможно, вы захотите использовать ack-grep , который также позволяет исключать с помощью регулярных выражений Perl и избегать всех каталогов VC, отлично подходит для поиска исходного кода.
вы можете использовать awk вместо grep
awk '/64/&&!/(\.svn|file|2\.[56])/' file