Есть ли команда для удаления всех файлов и подкаталогов в каталоге без удаление каталога?
Например, если у меня есть каталог dontDeleteMe с подкаталогами 1, 2, 3 и в каждом подкаталоге есть несколько картинок, как я могу удалить подкаталоги 1, 2, и 3 и все файлы в них, не удаляя родительский каталог dontDeleteMe?
Чтобы удалить все в каталог, не удаляя каталог, введите:
rm -rfv dontDeleteMe/*
Пожалуйста, обратите внимание, что /* часть очень важна. Если вы поставите пробел перед *, он удалит все ваши файлы в вашем текущем каталоге.
Кроме того, будьте очень осторожны, играя с rm, -r и * все в одной команде. Они могут быть катастрофическим сочетанием.
Обновление: Хорошо, я понял, что если у вас есть скрытые файлы / dot [имена файлов с точками в начале, например.x. .hidden] тогда это оставит эти файлы нетронутыми.
Так что на самом деле, самое простое решение для оригинальный вопрос является:
rm -rfv dontDeleteMe && mkdir dontDeleteMe
Другим вариантом было бы использовать find'с -exec вариант или труба для xargs (ниже):
Единственная причина rm -r ./* не всегда работает, потому что у вас могут быть скрытые файлы и / или папки, которые не соответствуют *.
С этой целью, bash предоставить возможность сделать * сопоставьте все, даже скрытые объекты:
cd dont-delete-meshopt -s dotglobrm -r ./*
Это может быть полезно для сброса dotglob к своему состоянию по умолчанию (не установленному), если вы продолжаете использовать оболочку, в которой вы выполнили вышеуказанные команды:
Время лекции по основам системного администрирования: Обязательно обращайте внимание на то, где вы находитесь, когда используете подобные команды подметания.
Я не могу сказать этого достаточно. Мне пришлось восстановить коробку, потому что кто-то не обратил внимания и набрал rm -rf * находясь в /.
*nix предполагает, что если вы являетесь root или выполняете sudo от имени root, вы знаете, что делаете. Поэтому убедитесь, что вы знаете, что делаете, прежде чем делать это.
Альтернативой, которая гарантирует, что ваша команда 'cd' сработает, прежде чем вы выдадите 'rm', является использование
Проще всего для меня - эксперта по Windows, но новичка в ubuntu
Нажмите на значок файлов на панели запуска
Перейдите в каталог, в котором находятся файлы и папки, которые вы хотите удалить
Щелкните правой кнопкой мыши в пустой области окна рядом с файлами и нажмите "Открыть в терминале" - оставьте окно файлов открытым
Откроется окно терминала, которое будет "установлено" в папку, которую вы нашли
Вы можете ввести "dir" (не обращайте внимания на кавычки, когда я говорю "введите") и нажать enter, чтобы терминал отобразил список файлов и папок - просто чтобы доказать, что вы находитесь "в" нужной папке
введите "rm -rf *" и нажмите enter
в зависимости от размера удаляемых папок/файлов система приостановит работу
Когда появится запрос терминала, в окне файлов, которое вы открыли, теперь будет написано "Папка пуста".
Я добился успеха с помощью этого метода, и мне было удобно видеть файлы / папки как в окне Files, так и в результате команды Dir в окне терминала
Я также был утешен тем, что в окне Файлов отображалась папка, которая теперь пуста, особенно с тех пор, как я гонялся за этими файлами в поисках папки корзины, в которой они находились
Спасибо всем остальным, кто прислал ответы - это было очень информативно