Вырезать путь к первым четырем каталогам

Идентификатор sid (идентификатор сеанса) должен быть согласованным.

Когда bash запускает команду, он обычно присваивает PGID первому процессу. Если это конвейер, все передаваемые по конвейеру команды имеют тот же PGID, что и первый процесс.

0
30.10.2018, 12:54
3 ответа

Вы уже упоминали cut. Вы просто устанавливаете разделитель на /. Несколько неинтуитивная часть заключается в том, что вам нужны поля 1 -5, потому что часть перед первым /также считается (пустым )полем.

echo /1/2/3/4/5/6/7 | cut -d/ -f1-5

Результат

/1/2/3/4
2
28.01.2020, 02:23

Попробуйте это,

 find /path/to/dir -mindepth 4 -type d | cut -d"/" -f -5 | sort -u
  • type -dбудет печатать только каталоги.
  • mindepthнапечатает каталоги, в которых есть минимум 4 подкаталога.
  • -d"/"используйте /в качестве разделителя для вырезания
  • -f -5вырезать все из пятой колонки
  • sort -uраспечатает отсортированные уникальные пути к папкам.
0
28.01.2020, 02:23

Возможно, вы захотите рассмотреть (double )«расширение параметра :Удалить соответствующий шаблон префикса/суффикса»:

$ path=/home/[username]/public_html/[prjectname]/abc/xyz
$ echo "${path%"${path#/*/*/*/*/}"}"
/home/[username]/public_html/[prjectname]/

Внешняя команда не требуется.

1
28.01.2020, 02:23

Теги

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