Рекурсивное удаление всех подпапок, кроме одной

Вы столкнулись как минимум с двумя проблемами:

  • Псевдонимы не раскрываются, когда оболочка не интерактивна, если только параметр оболочки expand_aliasesне установлен с помощью shopt.

  • .bashrcобычно содержит конфигурацию для интерактивных оболочек, а не для скриптов (, то есть не -интерактивных оболочек ).

Есть несколько решений:

# Set expand_aliases option and add the alias (in your script)
shopt -s expand_aliases
alias oTools="/home/user/folder/oTools-cli"

# Create a function instead of an alias (in your script)
oTools() { /home/user/folder/oTools-cli "$@"; }

# Add /home/user/folder to your PATH (in your.profile)
PATH="/home/user/folder:$PATH"
-1
14.09.2020, 10:12
1 ответ

Как рабочий -лайнер с учетом только описанных имён каталогов:

for dir in parent/*/; do printf "%s\n" "$dir"/*/ | sort -r | tail -n +2; done

будет список каталогов для удаления, а

for dir in parent/*/; do printf "%s\n" "$dir"/*/ | sort -r | tail -n +2 | xargs rm -rf; done

удалит их.

1
18.03.2021, 23:05

Теги

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