Часто можно искать этот вид вопроса в Розеттском камне для Unix. Это ничего не перечисляет для lsof
под SCO. Но можно загрузить и скомпилировать lsof
для SCO, как для примерно каждого существующего варианта Unix.
rm -rf -- * .*
Это портативно и работы, но это ужасно, потому что кроме с zsh
, это выдает предупреждения:
rm: cannot remove directory: `.'
rm: cannot remove directory: `..'
Попробуйте это:
find . -maxdepth 1 -not -name \. -exec rm -rf \{\} ;
POSIXly:
rm -rf -- * .[!.]* ..?*
Тот мог перестать работать, если список файлов он слишком большой, этот не будет:
find . ! -name . -prune -exec rm -rf {} +
С zsh
:
rm -rf -- *(D)
Лучшее решение, которое я нашел, к:
find . -delete
однако, - удаляют предикат, опасно (см. человека), и мне не нравится использовать его.
Обновление:
Мне не нравится -delete
предикат, потому что это может вызвать аварию при использовании кем-то не знакомым с деталями логики находки. Например:
find . -delete -name '*.bak' # DO NOT DO IT!!!
Кто-то может ожидать, что такой вызов удалит только '*.bak' файлы, но это - точный эквивалент find . -delete
.
-delete
прекрасен, но в целом -delete
опасно, это - то, почему мне не нравится он.
– Michał Šrajer
11.04.2013, 13:22
как насчет
rm -rf * .[a-z]* .[A-Z]* .[0-9]*
это будет работать? или у Вас есть другие шаблоны имени файла для соответствия также?
touch '#'
.
– Michał Šrajer
11.04.2013, 13:03
.
и -
например, но даже включая их можно столкнуться с a _
или другие менее частые символы.
– Tamara Wijsman
11.04.2013, 13:08
другая опция состоит в том, чтобы помнить значение pwd
, cd ..
, rm -rf
каталог и воссоздает каталог. Это также ужасно по многим причинам.
BTW, не вниз-голосуйте. Комментарий в случае необходимости.
Сначала удалите файлы, затем пустые каталоги:
find . -type f -exec rm \{\} \;
find . -depth -type d -empty -exec rmdir \{\} \;
-empty
не POSIX. -type f
для регулярных файлов только. Вы пропустили бы другие типы файлов как символьные ссылки, сокеты, каналы, двери, устройства... Использовать ! -type d
вместо этого.
– Stéphane Chazelas
11.04.2013, 13:52
rm -rf .
Это, конечно, не работает вообще, однако это:
rm -rf -- "$PWD"
удаляет CWD, и мы заканчиваем в рамках несуществующего каталога. Это очень ужасно.
BTW, не вниз-голосуйте. Комментарий в случае необходимости.
[^.]
но затем у Вас будут другие проблемы (как названные папки..abc
); таким образом я сомневаюсь, что можно избавиться от этих противных предупреждений. Это не "чистая" опция, но это работает. – Tamara Wijsman 11.04.2013, 13:07[^.]
не POSIX,[!.]
. – Stéphane Chazelas 11.04.2013, 13:46