Безопасный способ запуска эквивалента rm -rf * [закрыто]

Испытание кода примера 1, полученный файл 'filename.tex' на самом деле является gzip-файлом объекта R, содержащим данные tex - для сохранения текстового вывода объекта, не -compressed, use:

print(DF.tex, file = "/home/masi/filename.tex", compress = FALSE)

Для меня тестирование с использованием latex2html filename.tex дает хорошо отформатированную таблицу.

0
30.04.2019, 10:17
3 ответа

Да, переместитесь на один шаг вверх в иерархии каталогов и выполните rm -rf dirnameдля конкретного имени каталога (в этой команде не должно быть подстановки имени файла ).

Таким образом, пользователь не будет случайно удалять неправильные вещи, если они окажутся в неправильном каталоге, если только им не посчастливилось иметь каталог с таким же именем, но не связанный с ним в текущем рабочем каталоге. Это дополнительно удалит все скрытые файлы и каталоги, которые rm -rf *пропустят (из-за того, что *не расширяются до скрытых имен ).

Затем повторно -создайте каталог, если вам нужно.

Другим вариантом может быть не удаление каталога, а переименование его (и, возможно, его архивирование и сжатие ). Это также можно сделать из родительского каталога каталога, что позволит вам позже восстановить файлы из этого каталога. Является ли это жизнеспособным вариантом, зависит от того, что содержит этот каталог и какова на самом деле задача.

Также связанные:

4
28.01.2020, 02:18

Легко. Чтобы удалить все в текущей папке:

rm -rf./*

./ указывает на текущий каталог, поэтому ./*— это все в текущем каталоге. (Только не забудь точку, серьезно, не забудь точку)

Как сказано в ответе Кусалананды, это не распространяется на скрытые файлы (, поэтому для удаления скрытых файлов вам нужно выполнить отдельный rm -rf./.*)

Чтобы получить причудливую (команду, которая безопасно удаляет все, включая скрытые файлы, одним выстрелом)

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

Но есть вероятность, что rm -rf./ *./.*также будет в безопасности (не уверен, что ты хочешь рискнуть)

Если вы хотите быть в полной безопасности и не знаете, в какой папке находитесь, единственный способ

rm -rf /path/to/folder/*

или

rm -rf /path/to/folder/{,.[!.],..?}*
0
28.01.2020, 02:18

Если вас больше всего беспокоит невнимательность пользователя, возможно, лучше запросить подтверждение. например:

delete_cwd() {
        printf 'Are you sure you want to unlink everything in %s? ' "$(pwd)"
        IFS= read REPLY
        case $REPLY in
        [yY]|[yY]es) find. -delete;;
        *) return 1;;
        esac
}

Обратите внимание, что -deleteне стандартизирован, поэтому вы можете использовать:

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

Или, если вы хотите, чтобы ваш пользователь подтверждал каждое удаление, вы можете пропустить эту функцию и просто выполнить:

find. ! -name. -depth -ok rm -rf {} +
0
28.01.2020, 02:18

Теги

Похожие вопросы