В системе, основанной на Debian -, пуленепробиваемым -способом определения архитектуры, подходящей для использования в имени файла пакета, является
dpkg --print-architecture
Обратите внимание, что пакеты, независимые от архитектуры -, используют здесь all
, и вы должны знать это заранее.
Предполагая, что вы используете оболочку bash
:
shopt -s dotglob extglob
rm -rf../../!(child1)
Здесь команда shopt
включает две опции оболочки в оболочке bash
. Первый, dotglob
, гарантирует, что скрытые имена будут соответствовать шаблонам подстановки имен файлов. Второй, extglob
, позволяет использовать некоторые расширенные шаблоны подстановки (, исходные из оболочки ksh
).
Во второй строке используется расширенный шаблон подстановки для соответствия всем именам в каталоге parent
, кроме имени child1
. Содержимое каталога parent
находится на два уровня выше нас, поэтому мы сначала используем ../../
, а затем добавляем шаблон !(child1)
, который будет соответствовать всем именам, кроме имени child1
.
Все совпадающие имена передаются в rm -rf
для (рекурсивного )удаления.
Вместо использования относительного пути в шаблоне ../../!(child1)
вы также можете использовать абсолютный путь к каталогу parent
.Согласно вашему вопросу, абсолютный путь - /parent
, поэтому вместо этого шаблон становится /parent/!(child1)
. Использование абсолютного пути может быть безопаснее, если вы не уверены, где вы на самом деле находитесь относительно каталога parent
.
Еще один очевидный способ решить эту проблему — сначала убрать каталог child1
, удалить и заново создать каталог parent
, а затем снова переместить каталог child1
на место.
Здесь я использую абсолютные пути (использование относительных путей может привести к путанице, так как мы перемещаем наш текущий каталог относительноparent
):
mv /parent/child1 /tmp
rm -rf /parent
mkdir /parent
mv /tmp/child1 /parent
Если у вас есть GNU find, вы можете использовать эту команду
find../.. -depth -not -path "../../child1/*" -not -samefile../.. -not -samefile../../child1 -exec rm -r {} \;
Просто убедитесь, что вы действительно находитесь внутри/parent/child1/child2