Из man apt-cache
:
команда madison в apt-cache пытается имитировать выходной формат и подмножество функций управления архивом Debian инструмент, Мэдисон. Он отображает доступные версии пакета в табличном формате. В отличие от исходного Madison, он может отображать информацию только для архитектуры, для которой APT имеет извлеченные списки пакетов (APT :: Architecture)
Вы пробовали смотреть руководство?
Вариант, который вы ищете, это -maxdepth
, как уже написал @StevenPenny.
Одна из причин, по которой результатов нет, (из руководства)
If the whole expression contains no actions other than -prune or -print, -print is performed on all files for which the whole expression is true.
Так как ваши варианты включают -prune
, неявного -print
нет. Ваша команда удалит только каталоги с именем *.out
.
Если вы действительно хотите использовать -prune
, сделайте это:
find "$dir"/* -type d -prune -o -name '*.out' -print
Обратите внимание, что здесь используется "$dir"/*
, потому что "$dir"
— это каталог, который будет удален. Это сводит на нет преимущество find
, заключающееся в том, что он не ограничен максимальной длиной аргумента
Кажется, что здесь вообще не нужно find
.
for pathname in "$dir"/*.out; do
[ ! -f "$pathname" ] && continue
# do whatever you need to do to "$pathname" here
done
После теста -f
"$pathname"
будет указывать на обычный файл или на символическую ссылку на обычный файл. Обратите внимание, что скрытые файлы будут пропущены, поскольку *
не соответствует именам файлов, начинающимся с точки (, если только в bash
не установлен параметр оболочки dotglob
, который вы можете использовать или не использовать ).
Сfind
:
find "$dir" -mindepth 1 -type d -prune -o -type f -name '*.out' -print
-mindepth 1
приводит к тому, что начальный каталог не обрезается с помощью -type d -prune
. -print
следует заменить действием, которое вы хотели бы выполнить с найденными путями (, которые будут относиться к обычным файлам с именами, заканчивающимися на.out
).
Или,
find "$dir" ! -path "$dir" -type d -prune -o -type f -name '*.out' -print
При этом используются только стандартные find
параметры и удаляются все каталоги, которые не совпадают с начальным путем.
Как вариант,
find "$dir" -maxdepth 1 -type f -name '*.out' -print
Использование -maxdepth 1
проще говоря, остановило бы find
от спуска в любой из подкаталогов начального каталога.
Опции -mindepth
и -maxdepth
, хотя и широко доступны, являются расширениями стандартной команды find
, и если в вашей реализации find
их нет, вам придется используйте цикл оболочки или альтернативу find
, которая использует -prune
только (с-path
).