2

У меня есть довольно строгий набор спецификаций для списка каталогов, который мне нужен:

  1. Он должен перечислить каталоги в текущем каталоге
  2. Он должен содержать только базовое имя (без "./", без косой черты)
  3. Не должно быть ошибок, если их нет (и не должно выводить ошибку в std {out, err})
  4. Это должно быть очень легким
  5. Должно работать под tcsh

У меня что-то работает, как это:

find -maxdepth 1 -mindepth 1 -type d -printf '%f\n'

Но я не могу избавиться от ощущения, что использование "find" - это излишне. Я пытался что-то сделать с помощью ls -d */ , но я не мог понять, как сделать так, чтобы это не было ошибкой (или, по-видимому, не ошибкой).

Какие-либо предложения?

1 ответ1

1

Лично я бы сказал, что команда find - это путь.

Подход ls -d прямо сейчас имеет две проблемы:

  • Это показывает ошибку на пустых каталогах.
  • Он печатает косые черты.

Оба исправимы. tr может позаботиться о косых чертах, и вам нужно перенаправление, чтобы избавиться от сообщений об ошибках:

( ls -d */ | tr -d / > /dev/tty ) > & /dev/null

Смотрите man tcsh для получения дополнительной информации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .