Поиск файлов с указанным контентом [dубликат]

TCC Фабриса Белларда по-прежнему находится в репозиториях. Он может работать в некотором режиме интерпретатора, который делает возможным следующее:

Вы можете сделать простой исполняемый файл C-файла, например, OP, который пытается сделать, добавив строку

[ f2]

в самый верх файла.

Он также принимает ввод от STDIN, добавляя в конце пустую опцию (только знак минус -).

$ /usr/bin/tcc -run - <<EOF
> #include <stdio.h>
> int main()
> {
>    printf("Hello World\n");
>    return 0;
> }
> EOF
Hello World

или с echo

echo '#include <stdio.h> int main(){printf("Hello World\n");return 0;}' | /usr/bin/tcc -run -

или просто запустите /usr/bin/tcc -run - введите свой код и запустите с помощью CTRL + D [!d7 ]

Кажется бесполезным и глупым, но последний метод является самым быстрым (для меня, YMMV и т. д.), чтобы проверить функцию в большой библиотеке, посмотреть точное значение константы и т. д. И она небольшая (180k) что делает его подходящим для «Малина-Пи».

Основной недостаток: развитие остановлено (последняя версия с 2013 года).

6
задан 8 May 2014 в 03:57

4 ответа

Скрипт ниже выполняет поиск (текстовых) файлов в данном каталоге рекурсивно, для вхождений данной строки, независимо от того, находится ли она в верхнем или нижнем регистре или в любой их комбинации.

Это даст вы найдете список найденных совпадений, пути к файлам в сочетании с filenam и фактические вхождения строки в файле, выглядящие как:

/path/to/file1 ['numlock', 'numlocK'] /longer/path/to/file2 ['NuMlOck']

и т. д.

Чтобы использовать это:

1] Скопируйте приведенный ниже текст, вставьте его в список. он в пустой текстовый файл (gedit). 2] Отредактируйте две строки в headection, чтобы определить строку для поиска и каталог для поиска. 3] Сохраните его как searchfor.py. 4] Чтобы запустить его: откройте терминал, введите python3 + space, затем перетащите скрипт в окно терминала и нажмите return. Список найденных совпадений появится в файле terminalwindow

В случае ошибки сценарий упомянет об этом.

#!/usr/bin/python3 import os #----------------------------------------------------- # give the searched word here in lowercase(!): searchfor = "string_to_look_for" # give the aimed directory here: searchdir = "/path/to/search" #----------------------------------------------------- wordsize = len(searchfor) unreadable = [] print("\nFound matches:") for root, dirs, files in os.walk(searchdir, topdown=True): for name in files: file_subject = root+"/"+name try: with open(file_subject) as check_file: words = check_file.read() words_lower = words.lower() found_matches_list = [i for i in range(len(words_lower)) if words_lower.startswith(searchfor, i)] found_matches = [words[index:index+wordsize] for index in found_matches_list] if len(found_matches) != 0: print(file_subject, found_matches) else: pass except Exception: unreadable.append(file_subject) if len(unreadable) != 0: print("\ncould not read the following files:") for item in unreadable: print("unreadable:", item)
3
ответ дан 18 July 2018 в 05:12

Скрипт ниже выполняет поиск (текстовых) файлов в данном каталоге рекурсивно, для вхождений данной строки, независимо от того, находится ли она в верхнем или нижнем регистре или в любой их комбинации.

Это даст вы найдете список найденных совпадений, пути к файлам в сочетании с filenam и фактические вхождения строки в файле, выглядящие как:

/path/to/file1 ['numlock', 'numlocK'] /longer/path/to/file2 ['NuMlOck']

и т. д.

Чтобы использовать это:

1] Скопируйте приведенный ниже текст, вставьте его в список. он в пустой текстовый файл (gedit). 2] Отредактируйте две строки в headection, чтобы определить строку для поиска и каталог для поиска. 3] Сохраните его как searchfor.py. 4] Чтобы запустить его: откройте терминал, введите python3 + space, затем перетащите скрипт в окно терминала и нажмите return. Список найденных совпадений появится в файле terminalwindow

В случае ошибки сценарий упомянет об этом.

#!/usr/bin/python3 import os #----------------------------------------------------- # give the searched word here in lowercase(!): searchfor = "string_to_look_for" # give the aimed directory here: searchdir = "/path/to/search" #----------------------------------------------------- wordsize = len(searchfor) unreadable = [] print("\nFound matches:") for root, dirs, files in os.walk(searchdir, topdown=True): for name in files: file_subject = root+"/"+name try: with open(file_subject) as check_file: words = check_file.read() words_lower = words.lower() found_matches_list = [i for i in range(len(words_lower)) if words_lower.startswith(searchfor, i)] found_matches = [words[index:index+wordsize] for index in found_matches_list] if len(found_matches) != 0: print(file_subject, found_matches) else: pass except Exception: unreadable.append(file_subject) if len(unreadable) != 0: print("\ncould not read the following files:") for item in unreadable: print("unreadable:", item)
3
ответ дан 24 July 2018 в 18:16

Вы можете использовать grep -r для рекурсивного поиска содержимого файла, например

grep -Iri 'numlock' /path/to/search/dir/

, где /path/to/search/dir/ - это каталог верхнего уровня, с которого вы хотите начать поиск, - вы можете использовать /, но будьте готовы к этому, чтобы занять много времени.

Некоторые варианты, в зависимости от вашего точного требования:

, измените опцию -r на -R, если хотите чтобы следовать символическим ссылкам, добавьте параметр -l для печати только имен найденных файлов.

I сообщает grep игнорировать двоичные файлы, а i делает поиск нечувствительным к регистру.

Если ваша версия grep не поддерживает рекурсивный поиск, вы можете добиться того же, используя комбинацию find и grep, например

find /path/to/search/dir/ -type f -exec grep --color -HIi 'numlock' {} +
12
ответ дан 18 July 2018 в 05:12

Вы можете использовать grep -r для рекурсивного поиска содержимого файла, например

grep -Iri 'numlock' /path/to/search/dir/

, где /path/to/search/dir/ - это каталог верхнего уровня, с которого вы хотите начать поиск, - вы можете использовать /, но будьте готовы к этому, чтобы занять много времени.

Некоторые варианты, в зависимости от вашего точного требования:

, измените опцию -r на -R, если хотите чтобы следовать символическим ссылкам, добавьте параметр -l для печати только имен найденных файлов.

I сообщает grep игнорировать двоичные файлы, а i делает поиск нечувствительным к регистру.

Если ваша версия grep не поддерживает рекурсивный поиск, вы можете добиться того же, используя комбинацию find и grep, например

find /path/to/search/dir/ -type f -exec grep --color -HIi 'numlock' {} +
12
ответ дан 24 July 2018 в 18:16

Другие вопросы по тегам:

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