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


9

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

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

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

Ответы:


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

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

Это должен быть принятый ответ. +1
CodeMed



0

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

find MYFOLDER/ -type f -print0 | xargs -0 rm -f
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.