Если ваши каталоги названы YYYYMMDD
, как подсказывает ваш вопрос, воспользуйтесь алфавитным сглаживанием.
Поместите все каталоги в массив, а затем выберите первый :
dirs=(*/); first_dir="$dirs";
(На самом деле это сокращение для first_dir="${dirs[0]}";
.)
Аналогично, для последнего :
dirs=(*/); last_dir="${dirs[$((${#dirs[@]} - 1))]}";
Уродливый синтаксис, но он разбивается на:
# Create an array of all directories inside the working directory.
dirs=(*/);
# Get the number of entries in the array.
num_dirs=${#dirs[@]};
# Calculate the index of the last entry.
last_index=$(($num_dirs - 1));
# Get the value at the last index.
last_dir="${dirs[$last_index]}";
Я знаю, что это старый вопрос с принятым ответом, но я думаю, что этот метод предпочтительнее, поскольку он делает все в Bash. Нет причин для запуска дополнительных процессов, не говоря уже о , анализирующем вывод ls
. (Что, по общему признанию, должно быть хорошо в этом конкретном случае YYYYMMDD
имен.)