удалить содержимое каталога элегантным способом

удалить содержимое каталога элегантным способом

Я хотел бы удалить все содержимое текущего рабочего каталога. Как это сделать эффективно и элегантно?

У меня есть несколько файлов и каталогов, и некоторые из них начинаются с точки, например:

touch .abc; touch abcd ; mkdir foobar; touch "file name" "#"

Я ищу совместимое с posix, элегантное решение, чтобы сделать этот каталог пустым. Я опубликую некоторые из своих идей, но ни одна из них не идеальна.

решение1

rm -rf -- * .*

Это переносимо и работает, но это некрасиво, потому что за исключением случаев с zsh, выдает предупреждения:

rm: cannot remove directory: `.'
rm: cannot remove directory: `..'

решение2

Попробуй это:

find . -maxdepth 1 -not -name \. -exec rm -rf \{\} ;

решение3

POSIXly:

rm -rf -- * .[!.]* ..?*

Тот вариант может не сработать, если список файлов слишком большой, а этот — нет:

find . ! -name . -prune -exec rm -rf {} +

С zsh:

rm -rf -- *(D)

решение4

как насчет

 rm -rf * .[a-z]* .[A-Z]* .[0-9]*

это сработает? или у вас есть другие шаблоны имен файлов для сопоставления?

Связанный контент