Как я делаю (негну-) grep игнорируют двоичные файлы?

В НПО, где я работаю, мы просто используем текстовые файлы, помещенные в папку для критических процедур. Лично как Системный администратор / гибрид Веб-разработчика я использовал базу знаний текстовых файлов, рассеянных на древовидном каталоге, это - мой Memex, и я записываю почти все на нем (персональный, работа, и т.д.). Эта схема очень легка справиться с использованием Jedit реальный швейцарский нож для обработки текста, я нашел ее плагин схемы, сворачивание кода и гиперпоисковые функции необходимыми. Все это безопасно сохраненное rsync к ssh-accesible удаленному серверу.

alt text

Пара, что с Расширением Firefox Makelink и у Вас есть идеальный менеджер закладок.

2
задан 3 December 2009 в 21:04
2 ответа

Основываясь на предыдущем ответе, можно использовать команду "файла", чтобы определить текстовые файлы и затем ограничить grep только теми файлами. Например:

  find dir -type f -print |
    xargs file |
    grep text |
    cut -f1 -d: |
    xargs grep "expression"

Это:

  • Найдите все файлы в каталоге "dir"
  • Передайте их как аргументы "файлу"
  • Ищите вывод из "файла", содержащего слово "текст"
  • Прервите первое разграниченное двоеточием поле и используйте его в качестве имени файла
  • Ищите эти файлы с помощью grep.

Это приведет к сбою в случае имен файлов, содержащих пробел или двоеточия, но иначе сделает то, что Вы хотите.

3
ответ дан 3 December 2019 в 10:27
  • 1
    Тот работает немного лучше, но команда файла на hp-ux, кажется, так же плоха как команда grep - ' файл | grep text' недостаточно должен избавиться от двоичных файлов.. –  0x89 21 December 2009 в 16:05

Мог бы быть лучший путь, но возможно передать все файлы циклу оболочки и сделать что-то как следующее с командой файла:

if file "$i" | grep text; then
  ...
fi

...?

1
ответ дан 3 December 2019 в 10:27

Теги

Похожие вопросы