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

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

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

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) ), чтобы включить их.

  • дифференцируя два файла и получая уникальный результат в третьем
  • Можем ли мы найти количество страниц в файле Unix / Linux?
  • Инструмент для генерации трафика TCP
  • grep для извлечения подстрок в строке
  • Диагностировать ошибку скрипта в zsh vs bash
  • Выполнить команду после inotifywait установленных часов
  • Как сравнить число с плавающей запятой в сценарии оболочки
  • Ошибка скрипта Bash
  • Отформатируйте раздел справки о том, чтобы дефрагментировать флаг в одном столбце
  • Почему эта ошибка? Строка 26: Синтаксис Ошибка возле неожиданного токена «сделано»?
  • Простая эффективная конкатенация файлов CSV
  • Linux и Unix - лучшая ОС в мире.