Проблема с запуском скрипта Python через cron внутри Docker

Сzsh:

bydepth() REPLY=${REPLY//[^\/]}
cd Dropbox/**/*(D/O+bydepth[1])

Мы определяем bydepthфункцию сортировки, которая возвращает файл с удаленными символами, отличными от /(, поэтому порядок после этого преобразования находится на глубине )и используем рекурсивную подстановку(**/на любом уровне подкаталоги )с квалификаторами glob:

  • Dчтобы также учитывать скрытые каталоги
  • /только для каталогов
  • O+bydepth:обратная сортировка по глубине
  • [1]получить только первый (после сортировки ).

С bashи инструментами GNU эквивалент будет примерно таким:

IFS= read -rd '' deepest < <(find Dropbox/ -type d -print0 |
  awk -v RS='\0' -v ORS='\0' -F / '
    NF > max {max = NF; deepest = $0}
    END {if (max) print deepest}') && cd -- "$deepest"

(в случае ничьей выбранный не обязательно будет таким же, как в zshподходе ).

С вашим новым дополнительным требованием все становится сложнее. По сути, если я правильно понимаю, в случае связей он должен измениться на каталог, который является самым глубоким общим родителем всех этих каталогов на максимальной глубине. Сzsh:

cd_deepest() {
  setopt localoptions rematchpcre
  local REPLY dirs result dir match
  dirs=(${1:-.}/**/*(ND/nOne:'
   REPLY=${#REPLY//[^\/]}-$REPLY':))
  (($#dirs)) || return
  result=$dirs[1]
  for dir ($dirs[2,-1]) {
    [[ $result//$dir =~ '^([^-]*-.*)/.*//\1/' ]] || break
    result=$match[1]
  }
  cd -- ${result#*-} && print -rD -- $PWD
}

Пример:

$ tree Dropbox
Dropbox
├── a
│   └── b
│       ├── 1
│       │   └── x
│       └── 2
│           └── x
└── c
    └── d
        └── e

9 directories, 0 files
$ cd_deepest Dropbox
~/Dropbox/a/b

(Dropbox/a/b/1/xи Dropbox/a/b/2/x— самые глубокие, и мы меняем их на самый глубокий общий родитель(Dropbox/a/b)).

0
18.12.2014, 18:29
0 ответов

Теги

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