Создание рекурсивно отсортированного RAR-архива

По разным причинам я решил использовать RAR-архив для хранения некоторых данных, вместо этого сжатый tar.

Счастлив с решением, кроме одного: я не могу найти способ сортировки файлов. Порядок файлов важен, поскольку я планирую запрашивать архив, и результаты должны быть заказаны.
Моя файловая структура выглядит так:

2000/ 001.txt 002.txt ... 2001/ ... 2002/ ... 2011/ 

поэтому папки представляют годы и файлы внутри нумеруются. Используя ls , tar или любые файлы списков программ, как ожидалось. Если я попытаюсь создать нерекурсивный rar архив (т. Е. Сжать файлы только в папке 2000), файлы будут отсортированы, но если я попытаюсь добавить файлы рекурсивно ( rar a -r ), тогда файлы будут испорчены.

Я не могу найти какой-либо переключатель, кроме:

 n@ Read file names to include from stdin 

с которыми мне не повезло сделать это пригодным для использования.

Я мог бы вызвать rar для каждого файла, например:

for f in */*.txt ; do rar a -r archive.rar $f ; done

но это не очень умно.

Есть идеи?


Как я прокомментировал ниже, я хотел бы задать вопрос:

Мне удалось сохранить отсортированные файлы так же, как и в выше не столь умной строке:

for d in */ ; do rar a -r archive.rar $d*.txt ; done

который отлично работает для конкретного сценария, конечно

Я еще не нашел, как использовать n@ switch еще. Я использую RAR 4.10 beta 5

3 Solutions collect form web for “Создание рекурсивно отсортированного RAR-архива”

Использование rar на Ubuntu

(RAR 3.90 beta 2 Авторское право (c) 1993-2009 Александр Рошаль 3 июня 2009 года)

лучшее, что вы можете сделать, это:

 find * -type f | sort | xargs rar a ../eliezer.rar 

Которые вы распаковываете:

 unrar x eliezer.rar 

По крайней мере, это не вызывает rar для каждого файла.

Переключатель -n @, похоже, работает только для файлов. Например:

 find * -type f | rar a ../eliezer.rar -n@ 

создает «ПРЕДУПРЕЖДЕНИЕ: Нет файлов», если в CWD нет обычных файлов, но

 find * -type d | rar a ../eliezer.rar -n@ -r 

работает для каталогов.

Рекурсивный переключатель rr -r считывает имена файлов в порядке их появления в структуре dirent (man readdir). Таким образом, единственный способ, которым вы могли бы изменить порядок, который rar упаковывает в файлы, – это управлять порядком файлов в структурах файлов каталогов (обычно порядок создания) перед вызовом rar. Вы можете сделать это с помощью редактора каталогов с предостережением о том, что некоторые типы файловых систем могут изменять порядок файлов в структуре каталогов как часть их сбора мусора или оптимизации.

Вам все равно, как rar «хранит» данные?
Разве unrar v archive.rar |sort даст вам правильно отсортированный список?

У меня была аналогичная проблема, о которой говорилось в Вопросе, и придумал это решение:

 for d in *; do find "${d}/" -type f | sort | rar a "${d}.rar" @; done 
  1. он перечисляет все каталоги (только dirs в этой папке!)
  2. перечислите все файлы в одном из каналов
  3. Сортировать
  4. используйте @ без всякого греха
  • Удаление дубликатов в большом текстовом списке
  • Самый быстрый инструмент `uniq` в linux
  • Сортировка с неравными пробелами в первом столбце
  • Как сделать обратный вывод, который уже передан из команд сортировки и вырезания
  • Сравните и распечатайте данные из разных текстовых файлов на один в Shell
  • Как подключить сортировку к gawk?
  • Как файлы tar с отсортированным порядком?
  • Сортировка данных журнала с помощью bash
  • Сортировка файлов css по свойству цвета
  • Как сортировать файлы по части имени файла?
  • Удаление определенных строк и дубликатов из текстового файла текстового слова 11gb
  • Interesting Posts

    Состояние внутри строки в Bashscript

    Производительность и ограничения использования X GUI удаленно?

    В файле mwmrc, как я могу отключить мышь от изменения размера или перемещения окна?

    Как я могу загрузить функции этого файла скрипта, не загружая его каждый раз? «Команда не найдена» (основы Bash / scripting)

    cfgmgr как команда под Linux?

    Извлечь линии между двумя шаблонами

    Выполнение произвольной команды

    Программа для отслеживания изменений файлов / каталогов в Linux

    yum info: что означает «Репо: установлен»?

    Проблема фильтрации массива последовательностей для удаления дубликатов со сдвинутыми последовательностями

    Cygwin + / usr / bin / xterm: ошибка Xt: невозможно открыть отображение:: 0

    Может ли AppArmor ограничивать доступ к определенному интерфейсу?

    Ошибка установки Firefox

    Есть ли какие-либо GUI-тесты для Linux?

    Устранение неполадок Ubuntu 16.04 при конфигурации сети NAT

    Linux и Unix - лучшая ОС в мире.