LINUX.ORG.RU

Сортировка файлов в папке на убунте

 , , ,


0

1

Бьюсь второй день с сортировкой файлов в выбранной папке на ubuntu 12.04. Программа должна воспринимать 3 входных параметра: путь до папки, -a или -b

Что не работает в моем коде: 1) Выводится список с сортировкой в 3 столбца, как можно сделать вывод в два столбца? 2) Сортировка производится по размеру файлов в папке, использую 2 варианта сортировки: по возрастанию (через ls -lSr) и по убыванию (через ls -lS). Как можно в код добавить это ls -lSr? Пробовал таки написать, но безрезультатно.

Сам исходник тут



Последнее исправление: dewin88 (всего исправлений: 1)

Ну файлы ты умеешь доставать - это уже пол пути. Теперь посмотри как работает сортировка, в частности qsort. И как ее можно применить.

four_str_sam
()

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

Cactus64k
()
Ответ на: комментарий от dewin88

Предыдущий вариант с readdir был ближе к истине. В связке со stat у тебя есть все для сортировки.

Вообщем смотри.

  • Делаешь структуру хранения полученной инфы.
    typedef struct _FILE_STAT
    {
        char* file_name;
        struct stat st;
    } FILE_STAT;
    
  • Выделяешь массив указателей на эту структуру, скажем на 16 штук.
  • Заводишь на массив счетчик чтобы знать его размер и не вылезти.
  • Проходишься по папке циклом и собираешь инфу в этот массив. Если массив оказался маловат, то в цикле увеличиваешь его в два раза через realloc. И читаешь дальше.
    • При нахождении файла ты выделяешь память на структуру FILE_STAT. Указатель суешь в массив и увеличиваешь счетчик.
    • Далее выделяешь память под имя файла и заносишь в полученную структуру
  • Пишешь несколько функций сортировки для имени, размера и прочих данных. Функции ты будешь подставлять в qsort в зависимости от типа сортировки.
  • По окончании цикла остается отсортировать массив, натравив на него qsort
  • Ну и вывод инфы.
Cactus64k
()

lst=os.listdir('/tmp') lst.sort()

что может быть проще?

  /-------\
/   -----   \
|  0 || 0   |
| \       / |
anonymous
()

Бьюсь второй день с сортировкой файлов в выбранной папке

В мамке сортируй, вендузоид.

anonymous
()
Ответ на: комментарий от dewin88

В блокноте что ли кодишь?
apt-get install eclipse-cdt gdb gcc поможет
С первого взгляда видно, что у тебя используются переменные, которые ты не объявлял. Передирал куски кода в надежде, что получившийся франкенштейн не свалится тут же в сегволт?
Составь для себя алгоритм тулзы, запиши на бумажку. Гугли нужный функционал и подставляй. Я тебе уже все в принципе расписал. Тебе осталось почитать документацию на сам язык, т.к. ты нихрена не понимаешь.

Cactus64k
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.