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

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

04.05.2017 09:21:46 Просмотров 18 Источник

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

У вопроса есть решение - Посмотреть?

https://ru.stackoverflow.com/questions/661735/%d0%9d%d0%b0%d0%bf%d0%b8%d1%81%d0%b0%d1%82%d1%8c-bash-%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82-%d1%81%d0%b0%d0%bc%d1%8b%d0%b9-%d0%bd%d0%be%d0%b2%d1%8b%d0%b9-%d1%84%d0%b0%d0%b9%d0%bb-%d0%b8%d0%b7-%d1%81%d0%bf%d0%b8%d1%81%d0%ba%d0%b0#comment954427_661735
вы можете список файлов передать параметрами той же ls
https://ru.stackoverflow.com/questions/661735/%d0%9d%d0%b0%d0%bf%d0%b8%d1%81%d0%b0%d1%82%d1%8c-bash-%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82-%d1%81%d0%b0%d0%bc%d1%8b%d0%b9-%d0%bd%d0%be%d0%b2%d1%8b%d0%b9-%d1%84%d0%b0%d0%b9%d0%bb-%d0%b8%d0%b7-%d1%81%d0%bf%d0%b8%d1%81%d0%ba%d0%b0#comment954452_661735
спасибо, не додумался сразу сам)) Это сработало. А как можно сделать такое с помощью команды find -cnewer?

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

aleksandr barakin

04.05.2017 10:02:39

список всех переданных скрипту оций и параметров доступен в переменной $@. при обращении к ней имеет смысл заключать её в кавычки — "$@", для того, чтобы опции/параметры, содержащие пробелы ('пара метр1' пара\ метр2 и т.п.), не разбивались по этим самым пробелам.

  1. можно воспользоваться той же программой ls (опция -t сортирует по времени последней модификации файла, причём в обратном порядке — первым в списке будет файл, модифицированный самым последним):

    #!/bin/bash
    ls -t "$@" | head -1
    
  2. а можно пойти более сложным и длинным путём. например, воспользоваться программой stat, которая умеет выводить, к примеру, и время модификации файла (%Y в строке формата вывода, задаваемого опцией -c):

    #!/bin/bash
    stat -c '%Y %n' "$@" | sort | tail -1 | cut -d ' ' -f 2-
    
Win32Sector

04.05.2017 04:30:04

Находит самый свежий файл и выводит только его имя.

ls -t | head -2 | tail -n1 | tr -s " " | cut -d" " -f 9
Закрыть X