Intereting Posts
pgrep полный матч не работает, только часть, почему? Установленная резервная копия программного обеспечения Что происходит за кулисами для этих основных команд Unix? Как восстановить аутентификацию для диспетчера синаптических пакетов Debian Lenny? Как работает разрешение имен DNS в принципе? Перемещение и пустое / домашнее разделение Ubuntu Структура структуры преобразования Создание постоянного USB с минимальной ОС на os x Изменение resolv.conf при подключении сетевого интерфейса к запуску системы Перфорированное прерывание заняло слишком много времени, но перфорация не была установлена Интеграция `afuse` с` sshfs` как (systemd?) User-daemon, порожденная логином или первой оболочкой Как округлить числа с плавающей запятой в оболочке? Почему vim сбрасывается в одно и то же положение после нескольких пробелов? Использовать root для создания корневой оболочки для другого пользователя загрузка python при загрузке ядра Linux

Как tar-bzip старые файлы в ежегодных группах

Я хочу знать команду, которую я могу использовать для захвата и архивирования всех файлов в течение одного года. Я работаю над каталогом, который имеет 72000 файлов, с файлами от 2007 года до текущего. И я хочу сделать это более управляемым с помощью tar-bziping старых файлов в годовых группах. Таким образом, все файлы с 1-1-2007 по 12-31-2007 и т. Д. Спасибо за помощь!

Вы можете использовать команду find для выбора файлов в зависимости от времени их модификации .

 cd /path/to/directory find -type f -newermt 2007-01-01 ! -newermt 2008-01-01 

Обратите внимание, что это выбирает файлы, созданные в 2007 году в вашем часовом поясе, а файлы, отмеченные точно в полночь в год, сгруппированы с предыдущим годом.

Если ваша версия CentOS имеет старую версию find , которая не поддерживает -newermt , вы можете использовать -newer с файлами fencepost.

 touch -d 2007-01-01 /tmp/2007-01-01 touch -d 2008-01-01 /tmp/2008-01-01 find -type f -newer /tmp/2007-01-01 ! -newer /tmp/2008-01-01 

Предполагая, что имена файлов не содержат строк новой строки, вы можете передать результирующий список в качестве входа для tar с параметром -T ( -T - означает чтение имен файлов из стандартного ввода).

 cd /path/to/directory find -type f -newermt 2007-01-01 ! -newermt 2008-01-01 | tar -cjf /elsewhere/2007.tar.bz2 -T - 

( tar -cJf /elsewhere/2007.tar.xz внимание на tar -cJf /elsewhere/2007.tar.xz , xz быстрее декомпрессирует и сжимает лучше, за счет того, что при сжатии требуется больше памяти.)