Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
58 / 58 / 25
Регистрация: 01.11.2012
Сообщений: 282

Получить список только текстовых файлов в указанной директории

15.08.2015, 22:05. Показов 1762. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые форумчане, нужна помощь. Как получить список только текстовых файлов в указанной директории? Как получить список файлов ясно, а вот как отсеч только текстовые не понимаю. Подскажите как определить тип содержимого файла?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.08.2015, 22:05
Ответы с готовыми решениями:

Как вывести список файлов в указанной директории?
Подскажите пожалуйста, как вывести список файлов в указанной директории или хотя бы количество файлов в ней. Спасибо.

Получение только текстовых файлов в директории
Добрый день, код показывает все файлы которые находятся в папке. Как сделать, что бы он показывал только тхт, и определенные мною тхт...

Список всех файлов и папок указанной директории по заданной маске
Здравствуйте! Требуется написать программу, используя FileNameFilter которая выведет на экран список всех файлов и папок указанной...

6
3178 / 1937 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
15.08.2015, 22:24
Лучший ответ Сообщение было отмечено SHSerg как решение

Решение

Цитата Сообщение от SHSerg Посмотреть сообщение
отсечЬ
Текстовые - это не содержащие непечатаемых символов. Это и проверяйте. Все прочее требует специальных усилий (ex.: Исполняемый файл формата DOS/.COM может содержать только plain text).
1
58 / 58 / 25
Регистрация: 01.11.2012
Сообщений: 282
15.08.2015, 23:34  [ТС]
Спасибо. А что подразумевается под специальными усилиями?
0
3178 / 1937 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
16.08.2015, 00:02
Лучший ответ Сообщение было отмечено SHSerg как решение

Решение

Проверка по сигнатуре, например (PS/PDF/RTF), проверка формата (например, для DOS text можно ожидать парности CR/LF), проверка на BOM (UTF-8), подсчет энтропии (от текста ожидается осмысленность), дисперсия
(различна для различных кодировок) итп.

Вот здесь еще посмотрите: Автоматическое удаление нижних колонтитулов в нескольких файлах .rtf
2
58 / 58 / 25
Регистрация: 01.11.2012
Сообщений: 282
16.08.2015, 01:47  [ТС]
А еще вопрос такой, как определить MIME-тип файла? Какие для этого есть функции. Читал про magic.h но под линукс такой нет.
0
3178 / 1937 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
16.08.2015, 02:16
Про Linux уже мало что помню. Начните отсюда: mimetype(1) - Linux man page
1
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
20.08.2015, 13:50
Лучший ответ Сообщение было отмечено SHSerg как решение

Решение

В Linux есть утилита file, определяющая тип файла. Можно обработать её вывод
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
void read_next(char line[], FILE* src) {
    int symbol;
    int index = 0;
    while ((symbol = fgetc(src)) != EOF) {
        if (symbol != '\n')
            line[index++] = symbol;
        else break;
    }
}
 
int main() {
    // Строим трубу
    FILE* pipe = popen("file -i *", "r");
    if (pipe == NULL || pipe == -1) {
        puts("Cannot execute `file` command.");
        return EXIT_FAILURE;
    }
    // Читаем построчно
    char line[256];
    puts("Text files in folder:");
    while (!feof(pipe)) {
        read_next(line, pipe);
        // строка с text/ означает файл с текстовым содержимым
        // также стоит искать другие MIME: application/xml и др.
        if (strstr(line, "text/") != NULL) {
            char* fileName = strtok(line, ":");
            printf("%s\n", fileName);
            memset(line, '\0', 256);
        }
    }
 
    pclose(pipe);
    return EXIT_SUCCESS;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.08.2015, 13:50
Помогаю со студенческими работами здесь

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

Вывести список всех файлов из указанной директории, имена которых содержат русские буквы
Помогите с заданием, заранее спасибо! Вывести список всех файлов из указанной директории, имена которых содержат русские буквы.

Вывести список всех файлов из указанной директории, имена которых не соответствуют шаблону имени 8.3
Разработать утилиту. Оформить ее как командный (процедурный) файл. Задание:Вывести список всех файлов из указанной директории, имена...

Вывести список всех файлов из указанной директории, имена которых содержат русские буквы
Здравствуйте! Есть такая задача: Вывести список всех файлов из указанной директории, имена которых содержат русские буквы. У меня...

Вывести список всех файлов из указанной директории, имена которых не соответствуют шаблону имени 8.3
Вывести список всех файлов из указанной директории, имена которых не соответствуют шаблону имени 8.3. Объясню, нужно вывести список файлов,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru