- Print a file’s last modified date in Bash
- 10 Answers 10
- 🐧 Как узнать время и дату изменения файла в системах Linux
- Получение даты последнего изменения файла в Linux с помощью команды date
- Получение даты последнего изменения файла в Linux с помощью команды ls
- Получение даты последнего изменения файла в Linux с помощью команды stat
- Получение даты последнего изменения файла в Linux с помощью команды midnight commander
- Заключение
- You may also like
- 📜 Чтение файла построчно на Bash
- 📧 В чем разница между IMAP и POP3
- ✔️ Как управлять контейнерами LXD от имени обычного.
- 📜 Руководство для начинающих по созданию первого пакета.
- Феноменальная популярность электроники Xiaomi: основные причины
- 📜 Получение вчерашней даты в Bash: Практическое руководство
- Использование специальных гелей при мышечных болях
- 📦 Как расширить/увеличить файловую систему VxFS на Linux
- Услуги по размещению серверного оборудования в ЦОД
- Для чего выполняется ИТ консалтинг на предприятиях?
- Leave a Comment Cancel Reply
- • Свежие записи
- • Категории
- • Теги
- • itsecforu.ru
- • Страны посетителей
- IT is good
Print a file’s last modified date in Bash
I can’t seem to find how to print out the date of a file. I’m so far able to print out all the files in a directory, but I need to print out the dates with it. I know I need to attach a date format with the echo of the entry, but all I can’t find the correct format.
echo "Please type in the directory you want all the files to be listed" read directory for entry in "$directory"/* do echo "$entry" done
10 Answers 10
Isn’t the ‘date’ command much simpler? No need for awk, stat, etc.
Also, consider looking at the man page for date formatting; for example with common date and time format:
It looks like BSD (or at least OS X’s) date ‘s doesn’t have this. Its -r is just used to provide a timestamp to format. You’ll have to use GNU date to get this functionality.
In macOS 10.13 date [-r seconds | filename] is fully documented in the man page, and works as expected.
%y time of last modification, human-readable
for entry in «$directory»/* do stat -c%y «$entry» done Doesn’t work. Prints out stat: missing operand in terminal
Note that on BSD the stat command has a different syntax. My case for FreeBSD: stat -f %Sm -t %F» «%R filename .
Alternatively, you may try also :
On OS X, I like my date to be in the format of YYYY-MM-DD HH:MM in the output for the file.
So to specify a file I would use:
stat -f "%Sm" -t "%Y-%m-%d %H:%M" [filename]
If I want to run it on a range of files, I can do something like this:
#!/usr/bin/env bash for i in /var/log/*.out; do stat -f "%Sm" -t "%Y-%m-%d %H:%M" "$i" done
This example will print out the last time I ran the sudo periodic daily weekly monthly command as it references the log files.
To add the filenames under each date, I would run the following instead:
#!/usr/bin/env bash for i in /var/log/*.out; do stat -f "%Sm" -t "%Y-%m-%d %H:%M" "$i" echo "$i" done
The output would was the following:
2016-40-01 16:40 /var/log/daily.out 2016-40-01 16:40 /var/log/monthly.out 2016-40-01 16:40 /var/log/weekly.out
Unfortunately I’m not sure how to prevent the line break and keep the file name appended to the end of the date without adding more lines to the script.
PS — I use #!/usr/bin/env bash as I’m a Python user by day, and have different versions of bash installed on my system instead of #!/bin/bash
In case you haven’t figured out the line break part, the -e flag is available for the echo program. Example usage could be: echo -e «$(stat -f %Sm -t %Y%m%d_%H%M%S $AFile)\t$AFile.» . In your case it could be: echo -e «$(stat -f «%Sm» -t «%Y-%m-%d %H:%M» «$i»)\t$i.» `
Adding to @StevePenny answer, you might want to cut the not-so-human-readable part:
stat -c%y Localizable.strings | cut -d'.' -f1
For the line breaks i edited your code to get something with no line breaks.
#!/bin/bash for i in /Users/anthonykiggundu/Sites/rku-it/*; do t=$(stat -f "%Sm" -t "%Y-%m-%d %H:%M" "$i") echo $t : "$" # t only contains date last modified, then only filename 'grokked'- else $i alone is abs. path done
If file name has no spaces:
This prints as the following format:
Dec 21 20:03 a1.out Dec 21 20:04 a.cpp
If file names have space (you can use the following command for file names with no spaces too, just it looks complicated/ugly than the former):
Ah, I see! That mostly works, except for the files with the spaces in the names. Is there a solution for that?
Actually, I tried it again, and it doesn’t work. turns out I was trying out a directory that had file names without spaces. =/ Edited my answer below
when you say it does not work, can you say what is the error? it works for me when i executed it on my system.
EDITED: turns out that I had forgotten the quotes needed for $entry in order to print correctly and not give the «no such file or directory» error. Thank you all so much for helping me!
echo "Please type in the directory you want all the files to be listed with last modified dates" #bash can't find file creation dates read directory for entry in "$directory"/* do modDate=$(stat -c %y "$entry") #%y = last modified. Qoutes are needed otherwise spaces in file name with give error of "no such file" modDate=$ #%% takes off everything off the string after the date to make it look pretty echo $entry:$modDate
/home/joanne/Dropbox/cheat sheet.docx:2012-03-14 /home/joanne/Dropbox/Comp:2013-05-05 /home/joanne/Dropbox/Comp 150 java.zip:2013-02-11 /home/joanne/Dropbox/Comp 151 Java 2.zip:2013-02-11 /home/joanne/Dropbox/Comp 162 Assembly Language.zip:2013-02-11 /home/joanne/Dropbox/Comp 262 Comp Architecture.zip:2012-12-12 /home/joanne/Dropbox/Comp 345 Image Processing.zip:2013-02-11 /home/joanne/Dropbox/Comp 362 Operating Systems:2013-05-05 /home/joanne/Dropbox/Comp 447 Societal Issues.zip:2013-02-11
🐧 Как узнать время и дату изменения файла в системах Linux
В этом туториале показаны 4 простых способа получения даты последнего изменения файла в Linux.
Прочитав это руководство, вы будете знать, как проверить дату последней модификации файла с помощью команд ls, date и stat и бонус метод с MC.
Получение даты последнего изменения файла в Linux с помощью команды date
Первый способ узнать дату последней модификации файла в Linux, описанный в этой статье, основан на команде date.
Когда за командой date следует флаг -r, она показывает нам дату последней модификации файла.
Следующий пример показывает синтаксис для использования команды date, где itisgood – файл, дату последней модификации которого я хочу вывести.
Как вы можете видеть, вывод очень удобен для пользователя и включает дату и время последней модификации файла.
Для получения дополнительной информации о команде date посетите сайт https://man7.org/linux/man-pages/man1/date.1.html.
Получение даты последнего изменения файла в Linux с помощью команды ls
Второй метод, описанный в этом руководстве, объясняет, как получить дату последнего изменения файла с помощью команды ls.
Сначала используем команду ls с флагом -l, как показано на скриншоте ниже.
Флаг -l указывает команде ls вывести список файлов в длинном формате.
Список в длинном формате включает дату последней модификации файла.
Как вы можете видеть, в первом столбце показаны права, во втором и третьем – пользователи и группы файлов.
Четвертый столбец – размер.
Затем вы можете увидеть месяц, день и время, когда файл был изменен.
В отличие от предыдущего метода с ls, вы получите список всех файлов в каталоге, включая даты их модификации.
Для упорядоченного вывода вы можете добавить флаг -t.
Флаг -t выведет упорядоченный по дате модификации вывод, показывая сначала последние измененные файлы.
как вы видите, последние измененные файлы теперь отображаются первыми.
Команда ls также позволяет проверить дату последней модификации файла по отдельности; для этого просто укажите имя файла, как показано ниже.
Получение даты последнего изменения файла в Linux с помощью команды stat
Третий метод получения даты последней модификации файла в Linux, описанный в этой статье, показывает, как использовать команду stat для достижения этого результата.
Синтаксис довольно прост; просто запустите команду stat, за которой следует имя файла, дату последнего изменения которого вы хотите узнать, как показано в примере ниже.
Как вы можете видеть, вывод показывает больше информации, чем предыдущие команды.
Важно различать даты модификации и изменения.
Строка с именем Modify показывает последний раз, когда файл был изменен.
Строка с именем Change показывает последний раз, когда статус файла изменился; статус включает изменение прав, изменение владельца и т.д.
Вы можете выполнить приведенную ниже команду, чтобы получить в выводе только время модификации, опуская остальную информацию.
Получение даты последнего изменения файла в Linux с помощью команды midnight commander
Вы также можете запустить mc в каталоге, где лежит нужный нам файл и посмотреть дату изменения:
Заключение
Это руководство показывает, что получить дату последнего изменения файла в Linux можно с помощью различных простых методов.
Ни один из описанных методов не имеет особых преимуществ; все они могут быть реализованы легко и без установки дополнительных пакетов.
Для этого руководства я использовал Debian, но все описанные здесь команды доступны во всех дистрибутивах Linux.
Все описанные команды имеют дополнительные возможности, о которых вы можете узнать, прочитав man-страницы, указанные в конце каждого раздела.
itisgood
🐧 Перенаправление Bash объяснение с примерами
🛠️ Как устранить ошибку Initramfs в Fedora
You may also like
📜 Чтение файла построчно на Bash
📧 В чем разница между IMAP и POP3
✔️ Как управлять контейнерами LXD от имени обычного.
📜 Руководство для начинающих по созданию первого пакета.
Феноменальная популярность электроники Xiaomi: основные причины
📜 Получение вчерашней даты в Bash: Практическое руководство
Использование специальных гелей при мышечных болях
📦 Как расширить/увеличить файловую систему VxFS на Linux
Услуги по размещению серверного оборудования в ЦОД
Для чего выполняется ИТ консалтинг на предприятиях?
Leave a Comment Cancel Reply
• Свежие записи
• Категории
• Теги
• itsecforu.ru
• Страны посетителей
IT is good
В этой статье вы узнаете, как удалить удаленный Git-репозиторий. Процесс прост, но его полезно запомнить, чтобы избежать неожиданностей в будущем. Git – это…
В 11-й версии своей операционной системы Microsoft серьезно переработала интерфейс и убрала несколько привычных функций. Нововведения не всем пришлись по душе. Мы дадим…
Продажа ноутбука нередко становится хлопотным занятием. Кроме поиска покупателя, продавцу необходимо подготовить устройство перед проведением сделки. Но если последовательно выполнить все шаги, ничего…
Вы можете оказаться в ситуации, когда вам нужно использовать скрипт шелла для чтения файлов построчно. В этом руководстве я расскажу о нескольких способах…
Вторичное жильё выгоднее для молодых семей, желающих приобрести свою первую квартиру. Сталкиваясь с ипотечным кредитованием, можно избежать много лишней суеты и проблем, если…