Этот zsh-скрипт выберет два новейших (простых )файла в текущем каталоге, соберет отметку времени модификации самого последнего из них, преобразует эту отметку времени в формат ГГГГммдд, создаст каталог, затем скопирует эти два новейшие файлы в этот каталог:
#!/bin/zsh
newest2=( *(.om[1,2]) )
dsec=$( stat -c %Y "${newest2[1]}" )
dnam=$( date -d @"$dsec" +%Y%m%d )
mkdir "$dnam"
cp -- "${newest2[@]}" "$dnam"
Первая строка, присваивающая newest2
, расширяет подстановочный знак *
квалификатором (в скобках ). Квалификатор запрашивает:
.
--обычные файлы om
--упорядочено по времени модификации (от новейшего к старому набору)[1,2]
--разделите список, чтобы включить только элементы с 1 по 2 Затем мы запрашиваем stat
время модификации в секундах самого нового файла; эта дата передается в GNU date
, который возвращает имя каталога в нужном нам формате. После создания каталога команда cp
копирует два файла в этот каталог.
Благодаря @thanasisp, @crtl -alt -delor и @ilkkachu я смог разобраться в проблеме. Момент лампочки был, когда я попробовал следующую команду:
$ realpath --help
BusyBox v1.31.1 () multi-call binary.
Usage: realpath FILE...
Return the absolute pathnames of given FILE
Это сообщило мне о двух вещах :1 )о том, что я запускал версию этой команды для BusyBox, и 2 )эта версия realpath
не поддерживает ни один из командных переключателей, которые я использовал. с использованием.
Затем я вспомнил, что одно из изменений, которые я внес между тем, когда команда работала у меня в последний раз, и настоящим, заключалось в установке BusyBox. Как только я удалил BusyBox, я получил обычную версию realpath
, которая работала, как и ожидалось.
Это было в NixOS, но я не знаю, является ли проблема специфичной для NixOS.