- Как найти и отсортировать файлы по дате и времени модификации в Linux
- Утилиты Linux для сортировки файлов в Linux
- Некоторые способы сортировки файлов по дате и времени
- Заключение
- Вывод списка файлов с сортировкой
- Вывод директорий над файлами
- Сортировка даты в файле
- Команда sort в Linux
- Синтаксис
- Опции
- Примеры использования sort
- 1. Сортировка
- 2. Обратная сортировка
- 3. Сортировка по колонке
- 4. Сортировка по номеру
- 5. Удаление дубликатов
- 6. Сортировка по нескольким полям
Как найти и отсортировать файлы по дате и времени модификации в Linux
Обычно у нас есть привычка сохранять много информации в виде файлов в нашей системе. Некоторые, скрытые файлы, некоторые хранятся в отдельной папке, созданной для простоты понимания, а некоторые как есть. Но все это заполняет наши каталоги; обычно настольный, что делает его похожим на беспорядок. Но проблема возникает, когда нам нужно найти конкретный файл, измененный в определенную дату и время в этой огромной коллекции.
Люди, знакомые с графическим интерфейсом пользователя, могут найти его с помощью диспетчера файлов, который перечисляет файлы в формате длинного списка, что позволяет легко понять, что мы хотели, но те пользователи, у которых есть привычка к черным экранам, или даже любой, кто работает на серверах, которые лишены графического интерфейса, будут нужна простая команда или набор команд, которые могли бы облегчить их поиск.
Настоящая красота Linux проявляется здесь, поскольку в Linux есть набор команд, которые при использовании по отдельности или вместе могут помочь в поиске файла или сортировке коллекции файлов по их имени, дате модификации, времени создания или даже любому другому. фильтр, который вы могли бы подумать о применении, чтобы получить свой результат.
Здесь мы раскроем реальную силу Linux, изучив набор команд, которые могут помочь отсортировать файл или даже список файлов по дате и времени.
Утилиты Linux для сортировки файлов в Linux
Вот некоторые базовые утилиты командной строки Linux, которых достаточно для сортировки каталога по дате и времени:
ls — перечисление содержимого каталога, эта утилита может отображать файлы и каталоги и даже может отображать всю информацию о их статусе, включая дату и время изменения или доступа, разрешения, размер, владельца, группу и т. д.
Мы уже рассмотрели множество статей о команде Linux ls и команде sort, вы можете найти их ниже:
- Изучите команду ls на 15 основных примерах
- Изучите 7 команд Advanced ls с примерами
- 15 полезных вопросов для собеседования по команде ls в Linux
sort — эту команду можно использовать для сортировки результатов любого поиска по любому полю или любому конкретному столбцу поля.
Мы уже рассмотрели две статьи о команде сортировки Linux, вы можете найти их ниже:
- 14 примеров команд «sort» в Linux — часть 1
- 7 полезных примеров команд Linux «sort» — часть 2
Эти команды сами по себе являются очень мощными командами, которые нужно освоить, если вы работаете на черных экранах и имеете дело с большим количеством файлов, просто чтобы получить тот, который вам нужен.
Некоторые способы сортировки файлов по дате и времени
Ниже приведен список команд для сортировки по дате и времени.
Приведенная ниже команда перечисляет файлы в формате длинного списка и сортирует файлы по времени модификации, начиная с самых новых. Для сортировки в обратном порядке используйте переключатель -r с этой командой.
Список файлов в каталоге на основе времени последнего доступа, т.е. на основе времени последнего доступа к файлу, а не изменения.
Список файлов в каталоге на основе времени последнего изменения информации о статусе файла или ctime . Эта команда сначала перечислит тот файл, любая информация о статусе которого, такая как: владелец, группа, разрешения, размер и т. Д., Была недавно изменена.
Если переключатель -a используется с вышеуказанными командами, они могут перечислять и сортировать даже скрытые файлы в текущем каталоге, а переключатель -r выводит вывод в обратном порядке.
Однако для более глубокой сортировки, такой как сортировка в выводе команды find, также можно использовать ls , но там sort оказывается более полезным, поскольку вывод может содержать не только файл имя, но любые поля по желанию пользователя.
Команды ниже показывают использование sort с командой find для сортировки списка файлов по дате и времени.
Чтобы узнать больше о команде find, перейдите по этой ссылке: 35 практических примеров команды find в Linux
Здесь мы используем команду find , чтобы найти все файлы в корневом каталоге (‘/’) , а затем распечатать результат как: месяц, в котором был осуществлен доступ к файлу, а затем имя файла. Из этого полного результата мы перечисляем 11 лучших записей.
Приведенная ниже команда сортирует вывод с использованием ключа в качестве первого поля, указанного в -k1 , а затем сортирует по месяцу, указанному перед ним M .
Здесь мы снова используем команду find , чтобы найти все файлы в корневом каталоге, но теперь мы распечатаем результат в виде: последней даты доступа к файлу, последнего доступа к файлу и затем имени файла. Из этого мы выберем 11 лучших записей.
Приведенная ниже команда сортировки сначала выполняет сортировку на основе последней цифры года, затем сортировку на основе последней цифры месяца в обратном порядке и, наконец, сортировку на основе первого поля. Здесь «1.8» означает 8-й столбец первого поля, а «n» перед ним означает числовую сортировку, а «r» указывает сортировку в обратном порядке.
Здесь мы снова используем команду find , чтобы вывести список из 11 файлов в корневом каталоге и распечатать результат в формате: время последнего обращения к файлу и затем имя файла.
Приведенная ниже команда сортирует вывод на основе первого столбца первого поля вывода, который является первой цифрой часа.
Эта команда сортирует вывод команды ls -l на основе 6-го поля по месяцам, а затем на основе 7-го поля, которое является датой, численно.
Заключение
Точно так же, обладая некоторыми знаниями о команде сортировки, вы можете отсортировать практически любой список на основе любого поля и даже любого столбца, который вам нужен. Это были некоторые приемы, которые помогут вам сортировать файлы по дате или времени. На их основе вы можете создавать свои собственные трюки. Однако, если у вас есть другой интересный трюк, вы всегда можете упомянуть об этом в своих комментариях.
Источник
Вывод списка файлов с сортировкой
Поделюсь удобными параметрами команды ls для сортировки списка файлов. Команда ls предназначена для вывода списка файлов и директорий, но по умолчанию она сортирует список по имени.
Для того, чтобы отсортировать список файлов используются следующие опции:
Опция | Эквивалентная опция | Описание |
---|---|---|
-U | —sort=none | без сортировки |
-X | —sort=extension | сортировка по расширению файла |
-S | —sort=size | сортировка по размеру |
-t | —sort=time | сортировка по времени изменения |
-v | выполнять сортировку по версиям файлов | |
-r | выполнять сортировку в обратном порядке |
Например, мы хотим отсортировать список по размеру файлов, тогда выполняем команду:
Это эквивалентно следующей команде:
Аналогично, например, если мы хотим получить список, отсортированный по расширению файлов:
Вывод директорий над файлами
Обычно команда ls выводит директории вперемешку с файлами. Некоторые реализации команды ls поддерживают полезную опцию: —group-directories-first. Если данная опция указана, то все директории будут выводится над списком файлов, что очень удобно.
Дополнительную информацию по команде ls вы можете получить, выполнив в терминале: man ls.
Источник
Сортировка даты в файле
Здравствуйте! Помогите, пожалуйста, со скриптом. Есть следующая задача.
Дан файл с датами «dd.mm.yyyy 24h:mi:ss» — колонка дат. Найти минимальную, максимальную даты и разницу между ними в секундах. Можно считать, что все даты не менее 01.12.2006 00:00:00. Написал shell-скрипт для сортировки:
Однако он правильно сортирует только дату, а время неверно. Подскажите, пожалуйста, как правильно отсортировать время. Кусок файла с датами:
- 09.12.2006 17:50:08
- 06.12.2006 14:07:16
- 06.12.2006 22:33:22
- 08.12.2006 16:05:47
- 06.12.2006 12:21:12
- 08.12.2006 6:15:22
- 07.12.2006 4:07:12
- 09.12.2006 2:14:10
- 06.12.2006 11:28:09
- 09.12.2006 16:29:40
- 06.12.2006 22:31:00
- 06.12.2006 12:00:31
- 08.12.2006 16:29:51
Откройте форму добавления сообщения в тему и почитайте то, что написано в нижней части формы после слова «Внимание:».
Неужели так сложно просмотреть что ты видишь, прочитать и выполнить?
Вашу «кашу» никто читать не будет, оформите шапку темы правильно.
sort и так отсортирует так, как надо, без дополнительных параметров ‘-k . ‘, к тому же хорошо бы, если бы год стоял первым, потом был месяц и в конце день, а потом уже время.
ну а далее просто срезайте посредством tail и head первую и последнюю строку и обрабатывайте их.
Но всё же оформляйте тему правильно в соответствие с разметкой форума, как её узнать я вам уже указал.
Проблема в том, что команда sort сортирует только дату, но не время.
Как правильно отсортировать еще и по времени?
Посмотрите в моём примере есть две строки с одинаковой датой и разным временем, сортировка произошла.
Поскольку только начал изучать unix, то подскажите, что в вашем примере означает tst?
Текстовый файл со строками, на каждой строке отдельная запись.
Переведи все даты в секунды, man date, и сортируй как числа, man sort.
Да оно и так нормально сортируется. Если конечно у ТС такой формат строк как в моём примере.
По секундам лучше, тс хотел ведь ещё разницу считать. Если время в сек, то просто вычитание. Ну и таймзона может мешать.
Строго говоря сортировать файл можно так, как есть, затем срезать первую и последнюю строку вывода, а там уже работать с этими двумя строками. Хоть преобразовать в секунды, посчитать разницу и затем обратно преобразовать в дни, часы и минуты.
Источник
Команда sort в Linux
Сегодня мы поговорим о команде sort. Это утилита для вывода текстовых строк в определенном порядке. Проще говоря, для сортировки. Ее можно использовать для сортировки текста из одного или нескольких файлов или c помощью нее может быть выполнена сортировка вывода linux для какой-либо команды. Это может быть полезно во многих случаях. Например, отсортировать файлы по размеру в выводе команды du или собрать частотность использования команд из истории.
В этой инструкции мы подробно рассмотрим возможности команды sort Linux, ее опции и разберем несколько примеров использования.
Синтаксис
Уже по традиции подобных статей, сначала рассмотрим общий синтаксис команды:
$ sort опции файл
$ команда | sort опции
Опции
Теперь рассмотрим основные опции утилиты sort.
- -b — не учитывать пробелы
- -d — использовать для сортировки только буквы и цифры
- -i — сортировать только по ASCII символах
- -n — сортировка строк linux по числовому значению
- -r — сортировать в обратном порядке
- -с — проверить был ли отсортирован файл
- -o — вывести результат в файл
- -u — игнорировать повторяющиеся строки
- -m — объединение ранее отсортированных файлов
- -k — указать поле по которому нужно сортировать строки, если не задано, сортировка выполняется по всей строке.
- -f — использовать в качестве разделителя полей ваш символ вместо пробела.
Я понимаю, что многое из всего этого может быть непонятно, но на примерах все станет намного яснее.
Примеры использования sort
Наконец-то мы добрались к теме примеры sort Linux. Давайте сначала создадим файл с несколькими строками, на котором и будем проверять возможности утилиты.
computer
mouse
LAPTOP
data
RedHat
laptop
debian
laptop
Также можно воспользоваться вот такой командой:
echo -e «computer\nmouse\nLAPTOP\ndata\nRedHat\nlaptop\ndebian\nlaptop» > test.txt
Опция -e указывает команде, что нужно обрабатывать спецсимволы, а \n, если кто не знает, не что иное как спецсимвол перевода строки в Linux.
1. Сортировка
Теперь давайте выполним сортировку строк linux в нашем файле:
computer
data
debian
laptop
laptop
LAPTOP
mouse
RedHat
Вот несколько принципов, по которым команда sort linux сортирует строки:
- Строки с цифрами размещаются выше других строк
- Строки, начинающиеся с букв нижнего регистра размещаются выше
- Сортировка выполняется в соответствии алфавиту
- Строки сначала сортируются по алфавиту, а уже вторично по другим правилам.
2. Обратная сортировка
Отсортируем файл в обратном порядке:
RedHat
mouse
LAPTOP
laptop
laptop
debian
data
computer
3. Сортировка по колонке
Отсортируем вывод команды ls по девятой колонке, то есть по имени файла или папки. Колонку укажем опцией -k:
drwxr-xr-x 6 user user 4096 дек 6 14:29 Android
drwx—— 3 user user 4096 янв 14 22:18 Desktop
drwxr-xr-x 12 user user 4096 янв 14 21:49 Documents
drwx—— 5 user user 12288 янв 15 14:59 Downloads
drwxr-xr-x 7 user user 4096 янв 13 11:42 Lightworks
Сортировка вывода Linux выполняется так же просто как и строк из файла.
4. Сортировка по номеру
Отсортируем вывод команды ls по второй колонке. Для сортировки по числовому значению используется опция -n:
drwx—— 5 user user 12288 янв 15 14:59 Downloads
drwxr-xr-x 6 user user 4096 дек 6 14:29 Android
drwxr-xr-x 7 user user 4096 июн 10 2015 Sources
drwxr-xr-x 7 user user 4096 окт 31 15:08 VirtualBox
drwxr-xr-x 7 user user 4096 янв 13 11:42 Lightworks
drwxr-xr-x 8 user user 12288 янв 11 12:33 Pictures
5. Удаление дубликатов
Команда sort Linux позволяет не только сортировать строки, но и удалять дубликаты. Для этого есть опция -u:
computer
data
debian
laptop
LAPTOP
mouse
RedHat
Теперь строчка laptop не повторяется.
6. Сортировка по нескольким полям
Мы можем сортировать данные по нескольким полям. Например, отсортируем вывод ls по второму первично и вторично девятому полях:
ls -l | sort -t «,» -nk2,5 -k9
drwxr-xr-x 2 seriyyy95 seriyyy95 4096 дек 6 14:32 Links
drwxr-xr-x 2 seriyyy95 seriyyy95 4096 янв 13 10:43 tmp
drwx—— 3 seriyyy95 seriyyy95 4096 янв 14 22:18 Desktop
drwxr-xr-x 3 seriyyy95 seriyyy95 4096 мар 28 2015 Журналы
drwx—— 4 seriyyy95 seriyyy95 12288 янв 15 15:42 Загрузки
Вот и все. Мы немного приоткрыли занавесу над возможностями сортировки строк linux с помощью команды sort. Если у вас остались вопросы — спрашивайте в комментариях!
Источник