Удалить все файлы в каталоге

У меня есть каталог, который содержит некоторые файлы и некоторые папки, содержащие другие файлы. Я пытаюсь удалить эти файлы в основной каталог, не касаясь папок или их содержимого.

Я использую это

rm /media/d/data/* 

он работает отлично и только удаляет файлы, но мне интересно, почему терминал отображает это сообщение:

rm: cannot remove /media/d/data/dd1: Is a directory

и такое же сообщение появляется для всех папок, найденных в основной папке. Может ли кто-нибудь объяснить? и есть ли способ не отображать это сообщение на терминале?

4 Solutions collect form web for “Удалить все файлы в каталоге”

Это * собирает файлы и каталоги . Чтобы удалить файлы, попробуйте это

 find /media/d/data/ -maxdepth 1 -type f -delete 

По умолчанию rm не удаляет каталоги. Если вы хотите, чтобы каталоги были удалены, используйте rm -rf . Если вы хотите подавить сообщение, используйте rm <dir> 2>/dev/null . Обратите внимание, что все другие сообщения об ошибке также подавляются.

POSIXly:

 find ! -name . -prune -type f -exec rm -f {} + 

rm удаляет файлы, о которых вы говорите. * расширяется для всех файлов (включая каталоги), поэтому вы сообщаете rm об удалении каталогов, которые он не будет делать.

Большинство оболочек не имеют возможности исключать каталоги из шаблона подстановочных знаков. Шаблоны подстановок соответствуют файлам по имени, а не по типу. Вместо этого вы можете использовать find .

Zsh имеет квалификаторы glob, которые могут соответствовать файлам по типу, дате и т. Д. В zsh вы можете использовать

 rm *(.) 

для удаления всех обычных файлов или таких вариантов, как rm *(-.) для удаления обычных файлов и символической ссылки на обычные файлы, rm *(^/) для удаления всех файлов, кроме каталогов, и т. д.

Также обратите внимание, что * omits dot files (файлы, имя которых начинается с . ). find будет включать их. В zsh, * omits dot files по умолчанию; вы можете добавить D внутри круглых скобок (например, rm *(.D) ), чтобы включить их.

  • bash one-liner: установить переменную на вывод команды или значение по умолчанию, если вывод пуст
  • Как назначить значения матрицы переменным в bash
  • Фильтрация входов в текстовый файл
  • Почему этот скрипт дает синтаксическую ошибку «Неожиданный конец файла»?
  • Как читать иглу части команды sed из файла?
  • Как выполнять команды, последовательно эмулируя пользователя на терминале с помощью сценария оболочки
  • Разбиение файла на две части на основе определенной строки
  • Помогите мне, пожалуйста, найти мое недоразумение об этом маленьком фрагменте скрипта
  • Использование basename для расширения расширений файла и поиска файлов с тем же именем
  • Как получить разницу в уровне персонажа с помощью команды «diff» в Linux с помощью сценария оболочки?
  • как обмениваться переменными среды между оболочками, такими как глобальные переменные, связанные с мастером pid?
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.