Як видалити вміст каталогу в 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

У мене в meta/каталозі понад 500 тис. Файлів , тому я хотів спробувати альтернативу 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оболонку. Оболонка повинна підтримувати "Brace Expansion" та "Regular вирази" для файлових шаблонів.
Mircea Vutcovici

3

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

rm -rf foldername
mkdir foldername

На жаль Ви вказали (я перечитав ваше повідомлення). Ну і все-таки видалення та відтворення можуть спрацювати. Особливо, якщо ви ланцюгаєте команди разом, як

rm -rf foldername && mkdir foldername

Або

rm -rf foldername; mkdir foldername

Іноді ви не маєте дозволу в батьківській папці або хочете зберегти певні атрибути, про які ви не знаєте. Наприклад, ви не можете видалити свою домашню папку як некористувальницького користувача, але ви можете видалити з неї все, що завгодно.
Мірча Вутковичі

Це має бути прийнятою відповіддю. +1
CodeMed



0

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

find MYFOLDER/ -type f -print0 | xargs -0 rm -f
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.