Используйте DYLD_INSERT_LIBRARIES вместо LD_PRELOAD на Mac OS. Вы, возможно, должны установить DYLD_FORCE_FLAT_NAMESPACE также. Например.
DYLD_INSERT_LIBRARIES=./libfaketime.so.1 DYLD_FORCE_FLAT_NAMESPACE=y FAKETIME="-15d" date
В Bash можно использовать запаздывающую наклонную черту (я думаю, что это должно работать в любой оболочке POSIX):
rm -R -- */
Отметьте --
который разделяет опции от аргументов и позволяет удалять записи, запускающиеся с дефиса - иначе после расширения оболочкой, имя записи было бы интерпретировано как опция rm
(то же содержит для многих других утилит командной строки).
Добавьте -f
опция, если Вы не хотите быть предложенными подтверждение при удалении незаписываемых файлов.
Обратите внимание, что по умолчанию, скрытые каталоги (те, имя которых запускается с .
) будет оставлен в покое.
Важный протест: расширение */
будет также включать символьные ссылки, которые в конечном счете решают в файлы каталога типа. И в зависимости от rm
реализация, rm -R -- thelink/
или просто удалит символьную ссылку, или (в большинстве из них) удаляют содержание связанного каталога рекурсивно, но не что сам каталог, ни символьная ссылка.
При использовании zsh
, лучший подход должен был бы использовать спецификатор шарика для выбора файлов каталога типа только:
rm -R -- *(/) # or *(D/) to include hidden ones
или:
rm -R -- *(-/)
включать символьные ссылки на каталоги (но потому что на этот раз расширение не имеет запаздывания /
s, это - символьная ссылка только, которая удалена со всеми rm
реализации).
С bash
, AT&T ksh
, yash
или zsh
можно сделать:
set -- */
rm -R -- "${@%/}"
разделять запаздывание /
.
В дополнение к подстановочному знаку путь можно также использовать find
(по крайней мере, GNU находит) чтобы сделать это:
find -mindepth 1 -maxdepth 1 -type d -print0 | xargs -0 rm -R
Как с другим find
строки, можно выполнить первую часть (find -mindepth 1 -maxdepth 1 -type d
) видеть список каталогов, которые будут удалены.
Более безопасная опция состоит в том, чтобы сделать что-то вроде этого:
find -mindepth 1 -maxdepth 1 -type d -print0 | xargs -0 mv -i -t ../to-rm
# or
mv -i -t ../to-rm */
# or
mv -i */ ../to-rm
любой из которых переместит весь материал в ../to-rm
вместо того, чтобы удалить его. Можно проверить, что это сделало то, что Вы хотели, их rm -Rf
тот каталог на Вашем досуге.
to-rm
и find
который приятно обрабатывает каталоги, начинающиеся с точки (в дополнение к любому другому громоздкому выходу). :)
– peterph
23.03.2013, 00:24
Вы могли бы хотеть создать сценарий для некоторых из этих предложений, особенно rm -R -- */
, и сохраните его в своей/usr/local/bin папке; или создайте alias
в Вашем ~/.bashrc файл. Так как настолько легко ввести команду с опечаткой и повредить Вашу систему - даже одна буква и/или порядок букв могут привести к катастрофическим последствиям - это служило бы несколько большим надежным решением, чем необходимость ввести различные варианты и аргументы каждый раз, когда Вы хотите выполнить эту задачу.
Кроме того, можно хотеть включать -i or --interactive=once
или -I or --interactive=always
опция к Вашему сценарию/команде, который будет служить другим инструментом для предотвращения непреднамеренных удалений.
Кроме того, что-то как предложенный derobert было бы лучшим; просто скопировать/вставить сценарий в file/terminal-editor и корректирует его к Вашим определенным потребностям, и файлы/каталоги будут перемещены в единственный каталог (содержание которого можно проверить/проверить), что можно просто удалить путем издания rm -rf
команда.
Другая опция состоит в том, чтобы использовать приложение GUI, такое как Ваш файловый менеджер, и просто выбрать все применимые файлы/папки, которые Вы хотите удалить. Проверьте страницы руководства своего распределения, если у Вас нет полномочий.
Наконец, если папки пусты - чрезвычайно простые имена файлов - можно использовать rmdir
команда для удаления их. Это не работает на все, что можно хотеть удалить, но это будет пригождаться время от времени, когда Вы захотите сделать некоторую "уборку". ** Можно хотеть попытку -p --ignore-fail-on-non-empty
опция, которая позволит Вам удалять определенные подкаталоги, а также их пустых "родителей" - каталоги, в которых они находятся.
rm -rf <имя директории>
. Это работает. Просто ввод rm <имя директории>
приводит к множеству подвопросов, в которых каждый из подкаталогов нужно удалять вручную. Но rm -rf
помогает удалить всю директорию вместе с ее поддиректориями за один раз.
Сначала вам нужно составить список каталогов, а затем удалить их,не мешая обычным файлам, ls -d */ только перечисляет подкаталоги -, а передача их с помощью rm удаляет каталоги и содержимое, сохраняя незакрепленные файлы.
Эта команда должна выполнить задание,
ls -d */ | xargs rm -rf
-r
,-R
,--recursive
синонимы, означающие, "удаляют каталоги и их содержание рекурсивно". – peterph 22.03.2013, 23:39rm -R ./*/
- Это также избегает проблем с именами дефиса. – l0b0 23.03.2013, 11:08