Страницы

Поиск по вопросам

суббота, 14 декабря 2019 г.

Написать bash скрипт - самый новый файл из списка

#linux #bash #unix #shell


Здравствуйте. Только начал изучить баш и никак не могу придумать решение. Необходимо
написать shell script, в который я могу передать некоторое количество файлов, и он
выдаст мне самый новый по времени. Комманда ls -t | head -1 вернет мне самый новый
файл в директории. Как написать скрипт, который можно было бы выполнить из консоли,
передав список файлов (например, список из 2,3,4..9 файлов) [Количество файлов заранее
неизвестно], и в результате выполнения которого, будет получен один самый новый по
времени файл?
    


Ответы

Ответ 1



список всех переданных скрипту оций и параметров доступен в переменной $@. при обращении к ней имеет смысл заключать её в кавычки — "$@", для того, чтобы опции/параметры, содержащие пробелы ('пара метр1' пара\ метр2 и т.п.), не разбивались по этим самым пробелам. можно воспользоваться той же программой ls (опция -t сортирует по времени последней модификации файла, причём в обратном порядке — первым в списке будет файл, модифицированный самым последним): #!/bin/bash ls -t "$@" | head -1 а можно пойти более сложным и длинным путём. например, воспользоваться программой stat, которая умеет выводить, к примеру, и время модификации файла (%Y в строке формата вывода, задаваемого опцией -c): #!/bin/bash stat -c '%Y %n' "$@" | sort | tail -1 | cut -d ' ' -f 2-

Ответ 2



Находит самый свежий файл и выводит только его имя. ls -t | head -2 | tail -n1 | tr -s " " | cut -d" " -f 9

Комментариев нет:

Отправить комментарий