1

Можно ли в командной строке Linux - без запроса - рекурсивно удалять файлы (например, с помощью rm -r [path]), но сохранять каталоги под [path]?

РЕДАКТИРОВАТЬ: Для заинтересованных, я использовал ответ Пола ниже, чтобы построить этот удобный скрипт для использования в моих Makefiles (замените $ (DIRS) на пути, которые нужно очистить - например, каталоги bin и build):

clean:
    @if [ $$(find bin -type f | wc -l) -gt 0 ]; \
    then { \
        echo "The following will be deleted:"; \
        echo "------------------------------"; \
        find $(DIRS) -type f; \
        echo "------------------------------"; \
        read -p "Continue (y/n)? " -n 1 -r CONTINUE; \
        echo; \
    }; \
    else echo "No files to delete."; \
    fi; \
    \
    if [[ $$CONTINUE =~ ^[Yy]$$ ]]; \
    then find $(DIRS) -type f -delete; \
    fi;

1 ответ1

3

Да, вы можете использовать find:

find [path] -type f -delete

Запустите его без удаления, чтобы убедиться, что он нацелен на нужные файлы. type f означает поиск только файлов, а не каталогов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .