realpath сообщает мне, что моего каталога не существует, но это не так

Этот 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копирует два файла в этот каталог.

0
01.12.2020, 04:08
1 ответ

Благодаря @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.

4
18.03.2021, 22:46

Теги

Похожие вопросы