Найти папки в каталоге, не указав родительский каталог - программирование
Подтвердить что ты не робот

Найти папки в каталоге, не указав родительский каталог

Не удалось указать содержимое папки, в которой я не включен, в то время как исключение собственно имени папки.

Пример:

[email protected] [~]# find ~/test -type d
/root/test
/root/test/test1

Однако я хочу, чтобы он отображал /test 1 в качестве примера.

Мысли?

4b9b3361

Ответ 1

Вы можете сделать это с помощью -exec и basename:

find ~/test -type d -exec basename {} \;

Объяснение:

  • Часть find ~/test -type d находит все каталоги рекурсивно под ~/test, как вы уже знаете.
  • Часть -exec basename {} \; запускает команду basename на {}, где все результаты последнего шага заменяются на.

Ответ 2

Нет ничего плохого в простой

find ~/test -mindepth 1

Аналогично, это будет иметь тот же эффект:

find ~/test/*

поскольку он соответствует всем содержащимся внутри ~/test/, но не ~/test.

В любом случае вы почти наверняка обнаружите, что find будет жаловаться на параметр -mindepth n, который будет после любых других переключателей, поскольку упорядочение обычно важно, но переключатели -(min|max)depth n влияют на общее поведение.

Ответ 3

Тогда вам нужно -type f вместо -type d.

Или, если вы хотите отобразить список папок, исключая родительский -mindepth 1 (find ~/test -type d -mindepth 1).

И теперь, когда вы его отредактировали, я думаю, что вы хотите

find ~/test -type d -mindepth 1 |cut -d/ -f3-

Но я думаю, вам нужно быть более конкретным; -)

Ответ 4

Я просто установил его с помощью sed

find $BASE -type d \( ! -iname "." \)|sed s/$BASE//g

Где $BASE - начальное имя папки.