rm -rf все файлы и все скрытые файлы. & .. ошибка

rm -rf /some/path/* удаляет все не скрытые файлы в этом каталоге (и поддиректорах).

rm -rf /some/path/.* удаляет все скрытые файлы в этом каталоге (но не subdirs), а также дает следующую ошибку / предупреждение:

 rm: cannot remove directory: `/some/dir/.' rm: cannot remove directory: `/some/dir/..' 

Каким образом можно удалить все скрытые и не скрытые файлы и папки в целевом каталоге без получения предупреждения / ошибки . и .. ?

7 Solutions collect form web for “rm -rf все файлы и все скрытые файлы. & .. ошибка”

Вы всегда можете отправлять сообщения об ошибках в /dev/null

 rm -rf /some/path/.* 2> /dev/null 

Вы могли бы просто

 rm -rf /some/path/ mkdir /some/path/ 

… тогда вам не придется беспокоиться о скрытых файлах в первую очередь.

* соответствует всем неточечным файлам .[!.]* соответствует всем файлам точек, кроме . и файлы, чье имя начинается с .. , и ..?* соответствует всем файлам с точкой-точкой, кроме .. Вместе они соответствуют всем файлам, кроме . и .. Если любой из этих трех шаблонов ничего не соответствует, он расширяется до самого себя; rm -f не заботится о несуществующих аргументах, поэтому это не имеет значения.

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

Вы также можете использовать find . Это сложнее, но имеет преимущество в работе, даже если есть так много файлов, что подстановочные знаки выше будут выходить за пределы ограничения длины командной строки вашей системы.

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

Возможно, вам станет проще удалить и воссоздать каталог. Это имеет преимущество (или, в зависимости от ситуации, как недостаток), приводящее к пустой директории, даже если другая программа одновременно создает файлы в исходном каталоге.

Либо измените параметр dotglob вашей оболочки и используйте * , либо используйте что-то вроде find .

 find somedir -mindepth 1 -delete 

Просто понял, что это самый удобный способ в большинстве дистрибутивов Linux:

 ls -A1 | xargs rm -rf 

где

-A = перечислить все, кроме . и ..

-1 = положить каждый элемент в одну строку

Найти – твой друг.

 find ! -name '.' ! -name '..' -delete % find ! -name '.' ! -name '..' ./test ./test4 ./test4/.test6 ./test3 ./.test5 ./test2 % find ! -name '.' ! -name '..' -delete % find ! -name '.' ! -name '..' % 

Если вы хотите использовать рекурсивно поиск чего-то другого своего текущего каталога ($ PWD), добавьте путь сразу после команды find ; например, find /path ! -name '.' ! -name '..' -delete find /path ! -name '.' ! -name '..' -delete find /path ! -name '.' ! -name '..' -delete . Если вы хотите только спуститься к n числу каталогов, используйте параметр -maxdepth n сразу после параметра /path .

Вышеупомянутая команда была протестирована в системе Ubuntu 13.04. Скорее всего, будет работать на других современных системах Linux.

Это должно работать так же, как @Gilles, но более компактно:

 rm -rf {,.[!.],..?}* 

или

 rm -rf dir/to/files/{,.[!.],..?}* 

следует также добавить, if для использования в сценариях нужно просто быть в безопасности:

 if [ -d "$DIR" ]; then rm -rf ${DIR}/{,.[!.],..?}* fi 

Попробуйте этот код:

 Dirlist=``find /some/path/ -type d -name '.[^.]*'` for HiddenDir in $Dirlist do rm -rf $HiddenDir done 
  • Необходимо удалить каталог с именем '~', созданным случайно
  • Подстановочный шаблон rm не работает
  • Удалена команда `rm` в cygwin
  • Безопасный поиск и удаление файлов
  • Удаление файлов по возрасту
  • Как удалить файл в каталоге только для чтения?
  • Удаление hardlink с помощью rm -rfv удаляет оригинал?
  • Не удается удалить файл из-за «Недопустимый аргумент»
  • Как избавиться от «Ничего не найдено» при запуске «rm *»
  • Как удалить файлы, которые не заканчиваются на «.c»?
  • Как rm -r обходит рекурсивное удаление? В каком порядке?
  • В чем цель `rm -P`?
  • Linux и Unix - лучшая ОС в мире.