Ответ 1
Добавьте аргумент -d
в ls. Таким образом, он всегда будет печатать только то, что он сказал, а не заглядывать в каталоги.
Мне нужно получить последнее имя каталога в папке, которая начинается с nlb.
#!/bin/sh
cd /home/ashot/checkout
dirname=`ls -t nlb* | head -1`
echo $dirname
Когда папка содержит много папок с именем nlb, этот script работает отлично, но когда есть только одна папка с именем nlb, этот script печатает последнее имя файла внутри этой папки. Как изменить его, чтобы получить последнее имя каталога?
Добавьте аргумент -d
в ls. Таким образом, он всегда будет печатать только то, что он сказал, а не заглядывать в каталоги.
#!/bin/sh
cd /home/ashot/checkout
dirname=$(ls -dt nlb*/ | head -1)
echo $dirname
Как указывает другой ответ, вам нужно -d
, чтобы не заглядывать внутрь каталогов.
Дополнительным советом здесь является добавление /
к шаблону. В вопросе, который вы указали для получения последней каталога. С этим завершающим /
будут сопоставляться только каталоги, иначе если файл существует последним и соответствует шаблону nlb*
, который разбил бы ваш script.
Я также изменил `...`
на $(...)
, который является современным рекомендуемым стилем письма.