Отношения между двумя пакетами следующие:
cgroup-bin
зависит от cgroup-tools
; cgroup-tools
ломает и заменяет старые версии cgroup-bin
. Последние не являются зависимостями, но apt-cache rdepends
учитывают их по умолчанию; чтобы увидеть только строгие зависимости, вам нужно запустить
apt-cache rdepends --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances cgroup-bin
, который показывает только mininet
.
Ваша команда apt remove
говорит, что cgroup-tools
не потребуется после удаления cgroup-bin
; это имеет смысл, поскольку cgroup-bin
зависит от cgroup-tools
. Если бы cgroup-tools
зависело от cgroup-bin
, apt remove cgroup-bin
заставило бы удалить cgroup-tools
тоже (и попросило бы вас об этом ); это не будет означать, что cgroup-tools
больше не требуется, это будет означать, что удаление cgroup-bin
требует удаления cgroup-tools
, и оба пакета появятся после The following packages will be REMOVED:
.
Итак, все ваши команды дают ожидаемые результаты, и в этом нет противоречия :ничего не зависит от cgroup-bin
, поэтому его можно удалить.
Причина, по которой deborphan
перечисляет cgroup-bin
в качестве кандидата на удаление, заключается в том, что cgroup-bin
теперь является переходным пакетом :, он ничего не содержит, он только обеспечивает втягивание cgroup-tools
; cgroup-tools
— интересный пакет. (Вам необходимо пометить cgroup-tools
как установленный вручную с помощью apt-mark manual
.)
Можно сделать это сразу в процессе поиска файлов:
find Dir/ -name '*.gz' -regex '.*/ZRT[^/]*_[0-9]+/.*' -exec \
bash -c ': "$(grep -o "/ZRT[^/]*_[0-9]\+/" <<<"$0")";\
mkdir -p "${_#/}"; ln -s "$0" "${_#/}"' {} \;
Относительноtmp=$(find $Some_Dir -name "*.gz")
:
"$Some_Dir"
, а не только $Some_Dir
, см.https://mywiki.wooledge.org/Quotes. так и должно быть:
readarray -d '' files < <(find "$Some_Dir" -type f -name '*.gz' -print0)
Теперь вы можете просто зацикливаться на файлах, чтобы делать все, что хотите, например. так как вы сказалиI want to match the pattern starting with ZRT and ending with _somenumber
:
re='ZRT.*_somenumber'
for file in "${files[@]}"; do
if [[ $file =~ $re ]]; then
do whatever you like
fi
done
Очевидно, вам НЕ НУЖЕН массив файлов в первую очередь, вы можете просто зациклить прямо на выходеfind
:
re='ZRT.*_somenumber'
while IFS= read -r -d '' file; do
if [[ $file =~ $re ]]; then
do whatever you like
fi
done < <(find "$Some_Dir" -type f -name '*.gz' -print0)