Как удалить содержимое каталога в Centos

9

Мне нужно удалить все содержимое папки в CentOS, но не саму папку.

Например: у меня есть папка с именем «MYFOLDER», которая содержит подпапки FOLD_1, FOLD_2, FOLD_3, FOLD_4 ... и т. Д., И некоторые файлы. Мне нужно удалить все эти папки и файлы, но не папку контейнера MYFOLDER. Мне нужен этот каталог, чтобы направлять результаты предыдущего процесса.

Я пытался с помощью rm -rf команды, но это также удалить папку контейнера.

verofairy
источник

Ответы:

11

Вместо этого удалите содержимое папки.

rm -r MYFOLDER/*
Игнасио Васкес-Абрамс
источник
1
Обратите внимание, что это не скрытые файлы / каталоги внутри MYFOLDER
tylerl
1
@tylerl: Это происходит, если вы установите в shopt -s dotglobпервую очередь.
jgoldschrafe
Для этого необходимо вручную утвердить y / n по убыванию в каждом подкаталоге, что является пустой тратой времени. Правильная команда будет обрабатывать все это автоматически, чтобы вы не застряли с 50 подсказками.
CodeMed
rm -R /path/to/myfolder/*правильный синтаксис, чтобы избежать чрезмерных запросов на подтверждение удаления каждого файла и подпапки. Обратите внимание на столицу R.
CodeMed
5

Ты можешь использовать:

rm -r MYFOLDER/{.[^.],.??*}

Это удаляет также скрытые файлы и папки. Если у вас слишком много файлов в каталоге MYFOLDER, тогда вы должны запустить вместо этого:

ls MYFOLDER/{.[^.],.??*}|xargs rm -r
Мирча Вуцовичи
источник
У меня в каталоге более 500 тыс. Файлов meta/, поэтому я хотел попробовать альтернативный вариант xargs, однако я получаю следующие сообщения об ошибках: ls: cannot access meta/.[^.]: No such file or directory ls: cannot access meta/.??*: No such file or directory rm: missing operand
Andres SK
1
Убедитесь, что вы используете bashоболочку. Оболочка должна поддерживать «Расширение скобок» и «Регулярные выражения» для шаблонов файлов.
Мирча Вутцовичи
3

На мой взгляд, самый простой способ - удалить весь каталог, включая самого себя, а затем заново создать папку. Бывают ситуации, когда это не очень хорошее решение (такие как необслуживаемые сценарии или более сложные конвейеры), но вы не указали, почему не хотите удалять папку.

rm -rf foldername
mkdir foldername

К сожалению. Вы указали (я перечитал ваш пост). Ну, все же, удаление и воссоздание может работать. Особенно, если вы объединяете команды, например

rm -rf foldername && mkdir foldername

Или

rm -rf foldername; mkdir foldername
JDS
источник
Иногда у вас нет разрешения в родительской папке или вы хотите сохранить определенные атрибуты, о которых вы не знаете. Например, вы не можете удалить свою домашнюю папку как пользователь без полномочий root, но вы можете удалить что-нибудь под ней.
Мирча Вутцовичи
Это должен быть принятый ответ. +1
CodeMed
0

Как насчет

cd MYFOLDER
find . | rm -rf

Это также удаляет скрытые файлы (начинающиеся с точки).

Янне Пиккарайнен
источник
1
Это также удалит MYFOLDER.
Мирча Вутцовичи
0

Попробуйте rm -r -f filenameего работать с CentOS 6.x

Шив Сингх
источник
0

Я настоятельно рекомендую эту альтернативу (она также удаляет файлы с пробелами в именах):

find MYFOLDER/ -type f -print0 | xargs -0 rm -f
Андрес СК
источник