Как удалить все файлы в подпапках, но не подпапках itselves?

Я знаю, как рекурсивно удалить все подпапки и все файлы. Но в этом случае, я должен сохранить подпапки. В основном я должен освободить их всех.

Так, я имею

rootdir/
        subA/           
        subB/
        subC/
        subN/

И я хочу удалить все файлы внутри subA кому: subN, но без удаления subA...subN

Что такое консольная команда для этого? Я предполагаю, что это - переключатель к rm

5
задан 27 April 2015 в 19:08

4 ответа

Можно использовать эти find команда для идентификации только регулярных файлов (тип f) рекурсивно

find rootdir -type f

, Если это покажет результаты, то Вы ожидаете, затем для фактического удаления их

find rootdir -type f -delete

нбар это - реальное, удаляют не "перемещение к мусору" также - быть на 100% уверенным, что это - то, что Вы действительно хотите сделать прежде, чем выполнить команду.

17
ответ дан 23 November 2019 в 08:39

Основываясь на ответе steeldriver, можно добавить xargs так, чтобы был только один вызов к gvfs-мусору. в его примере, find призовет gvfs-trash однажды к каждому файлу найденный find. Это могло бы быть медленно, если существует много файлов:

find . -type f -print0 | xargs -0 gvfs-trash
2
ответ дан 23 November 2019 в 08:39

Можно также сделать это с эти rm команда, но необходимо было бы неоднократно делать это.

Вы можете сначала cd к родительскому каталогу с этим

cd /rootdir

после этого, необходимо будет работать

rm -rf ./folder/*

папка Replace с названием папки, которую Вы хотите освободить (например, subA).

Повторение это, пока все папки не пусты.

Примечание, которое -rf удалит также, удаляет все папки в папке, которую Вы хотите к пустому

1
ответ дан 23 November 2019 в 08:39

Можно сделать это с -exec как это: find rootdir -type f -exec rm {} \; (отмечают, что обратная косая черта важна)

0
ответ дан 23 November 2019 в 08:39

Другие вопросы по тегам:

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