
Я хотел бы удалить все содержимое текущего рабочего каталога. Как это сделать эффективно и элегантно?
У меня есть несколько файлов и каталогов, и некоторые из них начинаются с точки, например:
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]*
это сработает? или у вас есть другие шаблоны имен файлов для сопоставления?