gedit создает скрытые файлы резервных копий, заканчивающиеся на '~'. Я хотел сделать рекурсивную очистку моего дерева каталогов.
Команда rm *~
удалит все локальные файлы, заканчивающиеся на '~'
Я думал, rm -r *~ .
удалит все файлы во всем дереве, но я опечатал rm -r ~
.
Было сообщение, что не удалось удалить какой-либо каталог, и я вышел из команды. Вопрос в том, что я удаляю?
Я заметил, что моя конфигурация Filezilla пропала. Удаляет ли эта команда все скрытые каталоги из домашнего каталога?
rm -r something
рекурсивно удаляет файлы и каталоги в / под что-то ; он потерпит неудачу только на элементах, для которых у него нет разрешения на удаление, либо потому, что они принадлежат другому пользователю (например, root
), либо потому, что они используются (например, монтирование GVFS).
Если вы не добавили -f
(как в rm -rf something
), вы получите что-то вроде:
rm: remove write-protected regular file ‘something’?
rm: descend into write-protected directory ‘something’?
В этот момент вы можете прервать работу, и вы, вероятно, поймете, что выполнили неправильную команду .
Примечание. Вики сообщества, каждый может принять участие.
- Для нескольких файлов используйте опцию
-i
, чтобы получить подтверждение об удалении файлов или каталогов:$ rm -ri something/ rm: remove regular file ‘something/file~’? y rm: descend into directory ‘something’? y rm: remove regular file ‘something/file’? y rm: remove directory ‘something’? y
- При удалении из текущего каталога используйте префикс это с помощью
./
, чтобы избежать ошибочного удаления другого местоположения .:Выше было продемонстрировано использование$ cd something $ rm -v ./*~ removed ‘./file~’
./
. Если есть подкаталог, вы, конечно, также можете использоватьrm -v something/*~
. Осторожно: не думайте, чтоrm ./.*
удаляет все скрытые файлы в текущем каталоге. См. этот вопрос о Serverfault , чтобы узнать, как обойти скрытые файлы.- Переместить, а не удалить: вместо рекурсивного удаления файлов, в первую очередь я привык перемещать файлы, от которых я хочу избавиться, прежде чем окончательно удалить их. Если что-то пошло не так, его легко восстановить.
mv -b SOURCE DEST
- Используйте
find
(возможно, сgrep
) для предварительного просмотра , если вы хотите рекурсивно удалить выбранные файлы. Вы должны попытаться сделать это редким случаем, но если вам нужно ...find
без аргументов рекурсивно перечисляет все файлы / каталоги под текущим. Вы должны попытаться найтиman find
о том, как сделать его выборочным (сокровищница), но если вы не хотите беспокоиться, вы можете просто использовать знакомыйgrep
для фильтрации файлов, которые вы хотите удалить. Предположим, я хакер ядра uber-l33t, и меня беспокоит несколько килобайт "примеров" файлов в моем исходном дереве; Я хочу удалить все файлы, содержащие это имя. Поэтому я набираюfind | grep example
, что дает мне эти 20 файлов. Это выглядит неплохо, поэтому сейчас я иду и удаляю эти точные файлы вместе с ранее упомянутым подробным выводомrm -v
черезxargs
:find | grep example | xargs rm -vкоторый дает мне этот вывод. Такой предварительный просмотр предотвращает проблемы, где, например, вы делаете опечатку и печатаетеsample
вместоexample
.Приведенное выше решение не следует использовать, если у вас могут быть имена файлов, содержащие пробелы, символы табуляции, новые строки или кавычки (
"
или'
), поскольку это приведет кxargs
либо потерпеть неудачу, либо передатьrm
неполные имена файлов, что в худшем случае может привести к удалению неправильных файлов. Безопасный способ сделать это - сделать все это с помощью операторов и действийfind
.Далее будут показаны все файлы, содержащие слово
example
find . -name "*example*"
Если этот список содержит файлы, которые вы хотите удалить, используйте действие
-exec
, чтобы передать файлы вrm
.find . -name "*example*" -exec rm -v {} +
См. Использование Find для получения дополнительной информации. помогите с использованием
find
.
rm -r something
рекурсивно удаляет файлы и каталоги в / под что-то ; он потерпит неудачу только на элементах, для которых у него нет разрешения на удаление, либо потому, что они принадлежат другому пользователю (например, root
), либо потому, что они используются (например, монтирование GVFS).
Если вы не добавили -f
(как в rm -rf something
), вы получите что-то вроде:
rm: remove write-protected regular file ‘something’?
rm: descend into write-protected directory ‘something’?
В этот момент вы можете прервать работу, и вы, вероятно, поймете, что выполнили неправильную команду .
Примечание. Вики сообщества, каждый может принять участие.
- Для нескольких файлов используйте опцию
-i
, чтобы получить подтверждение об удалении файлов или каталогов:$ rm -ri something/ rm: remove regular file ‘something/file~’? y rm: descend into directory ‘something’? y rm: remove regular file ‘something/file’? y rm: remove directory ‘something’? y
- При удалении из текущего каталога используйте префикс это с помощью
./
, чтобы избежать ошибочного удаления другого местоположения .:Выше было продемонстрировано использование$ cd something $ rm -v ./*~ removed ‘./file~’
./
. Если есть подкаталог, вы, конечно, также можете использоватьrm -v something/*~
. Осторожно: не думайте, чтоrm ./.*
удаляет все скрытые файлы в текущем каталоге. См. этот вопрос о Serverfault , чтобы узнать, как обойти скрытые файлы.- Переместить, а не удалить: вместо рекурсивного удаления файлов, в первую очередь я привык перемещать файлы, от которых я хочу избавиться, прежде чем окончательно удалить их. Если что-то пошло не так, его легко восстановить.
mv -b SOURCE DEST
- Используйте
find
(возможно, сgrep
) для предварительного просмотра , если вы хотите рекурсивно удалить выбранные файлы. Вы должны попытаться сделать это редким случаем, но если вам нужно ...find
без аргументов рекурсивно перечисляет все файлы / каталоги под текущим. Вы должны попытаться найтиman find
о том, как сделать его выборочным (сокровищница), но если вы не хотите беспокоиться, вы можете просто использовать знакомыйgrep
для фильтрации файлов, которые вы хотите удалить. Предположим, я хакер ядра uber-l33t, и меня беспокоит несколько килобайт "примеров" файлов в моем исходном дереве; Я хочу удалить все файлы, содержащие это имя. Поэтому я набираюfind | grep example
, что дает мне эти 20 файлов. Это выглядит неплохо, поэтому сейчас я иду и удаляю эти точные файлы вместе с ранее упомянутым подробным выводомrm -v
черезxargs
:find | grep example | xargs rm -vкоторый дает мне этот вывод. Такой предварительный просмотр предотвращает проблемы, где, например, вы делаете опечатку и печатаетеsample
вместоexample
.Приведенное выше решение не следует использовать, если у вас могут быть имена файлов, содержащие пробелы, символы табуляции, новые строки или кавычки (
"
или'
), поскольку это приведет кxargs
либо потерпеть неудачу, либо передатьrm
неполные имена файлов, что в худшем случае может привести к удалению неправильных файлов. Безопасный способ сделать это - сделать все это с помощью операторов и действийfind
.Далее будут показаны все файлы, содержащие слово
example
find . -name "*example*"
Если этот список содержит файлы, которые вы хотите удалить, используйте действие
-exec
, чтобы передать файлы вrm
.find . -name "*example*" -exec rm -v {} +
См. Использование Find для получения дополнительной информации. помогите с использованием
find
.
rm -r something
рекурсивно удаляет файлы и каталоги в / под что-то ; он потерпит неудачу только на элементах, для которых у него нет разрешения на удаление, либо потому, что они принадлежат другому пользователю (например, root
), либо потому, что они используются (например, монтирование GVFS).
Если вы не добавили -f
(как в rm -rf something
), вы получите что-то вроде:
rm: remove write-protected regular file ‘something’?
rm: descend into write-protected directory ‘something’?
В этот момент вы можете прервать работу, и вы, вероятно, поймете, что выполнили неправильную команду .
Примечание. Вики сообщества, каждый может принять участие.
- Для нескольких файлов используйте опцию
-i
, чтобы получить подтверждение об удалении файлов или каталогов:$ rm -ri something/ rm: remove regular file ‘something/file~’? y rm: descend into directory ‘something’? y rm: remove regular file ‘something/file’? y rm: remove directory ‘something’? y
- При удалении из текущего каталога используйте префикс это с помощью
./
, чтобы избежать ошибочного удаления другого местоположения .:Выше было продемонстрировано использование$ cd something $ rm -v ./*~ removed ‘./file~’
./
. Если есть подкаталог, вы, конечно, также можете использоватьrm -v something/*~
. Осторожно: не думайте, чтоrm ./.*
удаляет все скрытые файлы в текущем каталоге. См. этот вопрос о Serverfault , чтобы узнать, как обойти скрытые файлы.- Переместить, а не удалить: вместо рекурсивного удаления файлов, в первую очередь я привык перемещать файлы, от которых я хочу избавиться, прежде чем окончательно удалить их. Если что-то пошло не так, его легко восстановить.
mv -b SOURCE DEST
- Используйте
find
(возможно, сgrep
) для предварительного просмотра , если вы хотите рекурсивно удалить выбранные файлы. Вы должны попытаться сделать это редким случаем, но если вам нужно ...find
без аргументов рекурсивно перечисляет все файлы / каталоги под текущим. Вы должны попытаться найтиman find
о том, как сделать его выборочным (сокровищница), но если вы не хотите беспокоиться, вы можете просто использовать знакомыйgrep
для фильтрации файлов, которые вы хотите удалить. Предположим, я хакер ядра uber-l33t, и меня беспокоит несколько килобайт "примеров" файлов в моем исходном дереве; Я хочу удалить все файлы, содержащие это имя. Поэтому я набираюfind | grep example
, что дает мне эти 20 файлов. Это выглядит неплохо, поэтому сейчас я иду и удаляю эти точные файлы вместе с ранее упомянутым подробным выводомrm -v
черезxargs
:find | grep example | xargs rm -vкоторый дает мне этот вывод. Такой предварительный просмотр предотвращает проблемы, где, например, вы делаете опечатку и печатаетеsample
вместоexample
.Приведенное выше решение не следует использовать, если у вас могут быть имена файлов, содержащие пробелы, символы табуляции, новые строки или кавычки (
"
или'
), поскольку это приведет кxargs
либо потерпеть неудачу, либо передатьrm
неполные имена файлов, что в худшем случае может привести к удалению неправильных файлов. Безопасный способ сделать это - сделать все это с помощью операторов и действийfind
.Далее будут показаны все файлы, содержащие слово
example
find . -name "*example*"
Если этот список содержит файлы, которые вы хотите удалить, используйте действие
-exec
, чтобы передать файлы вrm
.find . -name "*example*" -exec rm -v {} +
См. Использование Find для получения дополнительной информации. помогите с использованием
find
.
rm -r something
рекурсивно удаляет файлы и каталоги в / под что-то ; он потерпит неудачу только на элементах, для которых у него нет разрешения на удаление, либо потому, что они принадлежат другому пользователю (например, root
), либо потому, что они используются (например, монтирование GVFS).
Если вы не добавили -f
(как в rm -rf something
), вы получите что-то вроде:
rm: remove write-protected regular file ‘something’?
rm: descend into write-protected directory ‘something’?
В этот момент вы можете прервать работу, и вы, вероятно, поймете, что выполнили неправильную команду .
Примечание. Вики сообщества, каждый может принять участие.
- Для нескольких файлов используйте опцию
-i
, чтобы получить подтверждение об удалении файлов или каталогов:$ rm -ri something/ rm: remove regular file ‘something/file~’? y rm: descend into directory ‘something’? y rm: remove regular file ‘something/file’? y rm: remove directory ‘something’? y
- При удалении из текущего каталога используйте префикс это с помощью
./
, чтобы избежать ошибочного удаления другого местоположения .:Выше было продемонстрировано использование$ cd something $ rm -v ./*~ removed ‘./file~’
./
. Если есть подкаталог, вы, конечно, также можете использоватьrm -v something/*~
. Осторожно: не думайте, чтоrm ./.*
удаляет все скрытые файлы в текущем каталоге. См. этот вопрос о Serverfault , чтобы узнать, как обойти скрытые файлы.- Переместить, а не удалить: вместо рекурсивного удаления файлов, в первую очередь я привык перемещать файлы, от которых я хочу избавиться, прежде чем окончательно удалить их. Если что-то пошло не так, его легко восстановить.
mv -b SOURCE DEST
- Используйте
find
(возможно, сgrep
) для предварительного просмотра , если вы хотите рекурсивно удалить выбранные файлы. Вы должны попытаться сделать это редким случаем, но если вам нужно ...find
без аргументов рекурсивно перечисляет все файлы / каталоги под текущим. Вы должны попытаться найтиman find
о том, как сделать его выборочным (сокровищница), но если вы не хотите беспокоиться, вы можете просто использовать знакомыйgrep
для фильтрации файлов, которые вы хотите удалить. Предположим, я хакер ядра uber-l33t, и меня беспокоит несколько килобайт "примеров" файлов в моем исходном дереве; Я хочу удалить все файлы, содержащие это имя. Поэтому я набираюfind | grep example
, что дает мне эти 20 файлов. Это выглядит неплохо, поэтому сейчас я иду и удаляю эти точные файлы вместе с ранее упомянутым подробным выводомrm -v
черезxargs
:find | grep example | xargs rm -vкоторый дает мне этот вывод. Такой предварительный просмотр предотвращает проблемы, где, например, вы делаете опечатку и печатаетеsample
вместоexample
.Приведенное выше решение не следует использовать, если у вас могут быть имена файлов, содержащие пробелы, символы табуляции, новые строки или кавычки (
"
или'
), поскольку это приведет кxargs
либо потерпеть неудачу, либо передатьrm
неполные имена файлов, что в худшем случае может привести к удалению неправильных файлов. Безопасный способ сделать это - сделать все это с помощью операторов и действийfind
.Далее будут показаны все файлы, содержащие слово
example
find . -name "*example*"
Если этот список содержит файлы, которые вы хотите удалить, используйте действие
-exec
, чтобы передать файлы вrm
.find . -name "*example*" -exec rm -v {} +
См. Использование Find для получения дополнительной информации. помогите с использованием
find
.
rm -r something
рекурсивно удаляет файлы и каталоги в / под что-то ; он потерпит неудачу только на элементах, для которых у него нет разрешения на удаление, либо потому, что они принадлежат другому пользователю (например, root
), либо потому, что они используются (например, монтирование GVFS).
Если вы не добавили -f
(как в rm -rf something
), вы получите что-то вроде:
rm: remove write-protected regular file ‘something’?
rm: descend into write-protected directory ‘something’?
В этот момент вы можете прервать работу, и вы, вероятно, поймете, что выполнили неправильную команду .
Примечание. Вики сообщества, каждый может принять участие.
- Для нескольких файлов используйте опцию
-i
, чтобы получить подтверждение об удалении файлов или каталогов:$ rm -ri something/ rm: remove regular file ‘something/file~’? y rm: descend into directory ‘something’? y rm: remove regular file ‘something/file’? y rm: remove directory ‘something’? y
- При удалении из текущего каталога используйте префикс это с помощью
./
, чтобы избежать ошибочного удаления другого местоположения .:Выше было продемонстрировано использование$ cd something $ rm -v ./*~ removed ‘./file~’
./
. Если есть подкаталог, вы, конечно, также можете использоватьrm -v something/*~
. Осторожно: не думайте, чтоrm ./.*
удаляет все скрытые файлы в текущем каталоге. См. этот вопрос о Serverfault , чтобы узнать, как обойти скрытые файлы.- Переместить, а не удалить: вместо рекурсивного удаления файлов, в первую очередь я привык перемещать файлы, от которых я хочу избавиться, прежде чем окончательно удалить их. Если что-то пошло не так, его легко восстановить.
mv -b SOURCE DEST
- Используйте
find
(возможно, сgrep
) для предварительного просмотра , если вы хотите рекурсивно удалить выбранные файлы. Вы должны попытаться сделать это редким случаем, но если вам нужно ...find
без аргументов рекурсивно перечисляет все файлы / каталоги под текущим. Вы должны попытаться найтиman find
о том, как сделать его выборочным (сокровищница), но если вы не хотите беспокоиться, вы можете просто использовать знакомыйgrep
для фильтрации файлов, которые вы хотите удалить. Предположим, я хакер ядра uber-l33t, и меня беспокоит несколько килобайт "примеров" файлов в моем исходном дереве; Я хочу удалить все файлы, содержащие это имя. Поэтому я набираюfind | grep example
, что дает мне эти 20 файлов. Это выглядит неплохо, поэтому сейчас я иду и удаляю эти точные файлы вместе с ранее упомянутым подробным выводомrm -v
черезxargs
:find | grep example | xargs rm -vкоторый дает мне этот вывод. Такой предварительный просмотр предотвращает проблемы, где, например, вы делаете опечатку и печатаетеsample
вместоexample
.Приведенное выше решение не следует использовать, если у вас могут быть имена файлов, содержащие пробелы, символы табуляции, новые строки или кавычки (
"
или'
), поскольку это приведет кxargs
либо потерпеть неудачу, либо передатьrm
неполные имена файлов, что в худшем случае может привести к удалению неправильных файлов. Безопасный способ сделать это - сделать все это с помощью операторов и действийfind
.Далее будут показаны все файлы, содержащие слово
example
find . -name "*example*"
Если этот список содержит файлы, которые вы хотите удалить, используйте действие
-exec
, чтобы передать файлы вrm
.find . -name "*example*" -exec rm -v {} +
См. Использование Find для получения дополнительной информации. помогите с использованием
find
.
rm -r something
рекурсивно удаляет файлы и каталоги в / под что-то ; он потерпит неудачу только на элементах, для которых у него нет разрешения на удаление, либо потому, что они принадлежат другому пользователю (например, root
), либо потому, что они используются (например, монтирование GVFS).
Если вы не добавили -f
(как в rm -rf something
), вы получите что-то вроде:
rm: remove write-protected regular file ‘something’?
rm: descend into write-protected directory ‘something’?
В этот момент вы можете прервать работу, и вы, вероятно, поймете, что выполнили неправильную команду .
Примечание. Вики сообщества, каждый может принять участие.
- Для нескольких файлов используйте опцию
-i
, чтобы получить подтверждение об удалении файлов или каталогов:$ rm -ri something/ rm: remove regular file ‘something/file~’? y rm: descend into directory ‘something’? y rm: remove regular file ‘something/file’? y rm: remove directory ‘something’? y
- При удалении из текущего каталога используйте префикс это с помощью
./
, чтобы избежать ошибочного удаления другого местоположения .:Выше было продемонстрировано использование$ cd something $ rm -v ./*~ removed ‘./file~’
./
. Если есть подкаталог, вы, конечно, также можете использоватьrm -v something/*~
. Осторожно: не думайте, чтоrm ./.*
удаляет все скрытые файлы в текущем каталоге. См. этот вопрос о Serverfault , чтобы узнать, как обойти скрытые файлы.- Переместить, а не удалить: вместо рекурсивного удаления файлов, в первую очередь я привык перемещать файлы, от которых я хочу избавиться, прежде чем окончательно удалить их. Если что-то пошло не так, его легко восстановить.
mv -b SOURCE DEST
- Используйте
find
(возможно, сgrep
) для предварительного просмотра , если вы хотите рекурсивно удалить выбранные файлы. Вы должны попытаться сделать это редким случаем, но если вам нужно ...find
без аргументов рекурсивно перечисляет все файлы / каталоги под текущим. Вы должны попытаться найтиman find
о том, как сделать его выборочным (сокровищница), но если вы не хотите беспокоиться, вы можете просто использовать знакомыйgrep
для фильтрации файлов, которые вы хотите удалить. Предположим, я хакер ядра uber-l33t, и меня беспокоит несколько килобайт "примеров" файлов в моем исходном дереве; Я хочу удалить все файлы, содержащие это имя. Поэтому я набираюfind | grep example
, что дает мне эти 20 файлов. Это выглядит неплохо, поэтому сейчас я иду и удаляю эти точные файлы вместе с ранее упомянутым подробным выводомrm -v
черезxargs
:find | grep example | xargs rm -vкоторый дает мне этот вывод. Такой предварительный просмотр предотвращает проблемы, где, например, вы делаете опечатку и печатаетеsample
вместоexample
.Приведенное выше решение не следует использовать, если у вас могут быть имена файлов, содержащие пробелы, символы табуляции, новые строки или кавычки (
"
или'
), поскольку это приведет кxargs
либо потерпеть неудачу, либо передатьrm
неполные имена файлов, что в худшем случае может привести к удалению неправильных файлов. Безопасный способ сделать это - сделать все это с помощью операторов и действийfind
.Далее будут показаны все файлы, содержащие слово
example
find . -name "*example*"
Если этот список содержит файлы, которые вы хотите удалить, используйте действие
-exec
, чтобы передать файлы вrm
.find . -name "*example*" -exec rm -v {} +
См. Использование Find для получения дополнительной информации. помогите с использованием
find
.
rm -r something
рекурсивно удаляет файлы и каталоги в / под что-то ; он потерпит неудачу только на элементах, для которых у него нет разрешения на удаление, либо потому, что они принадлежат другому пользователю (например, root
), либо потому, что они используются (например, монтирование GVFS).
Если вы не добавили -f
(как в rm -rf something
), вы получите что-то вроде:
rm: remove write-protected regular file ‘something’?
rm: descend into write-protected directory ‘something’?
В этот момент вы можете прервать работу, и вы, вероятно, поймете, что выполнили неправильную команду .
Примечание. Вики сообщества, каждый может принять участие.
- Для нескольких файлов используйте опцию
-i
, чтобы получить подтверждение об удалении файлов или каталогов:$ rm -ri something/ rm: remove regular file ‘something/file~’? y rm: descend into directory ‘something’? y rm: remove regular file ‘something/file’? y rm: remove directory ‘something’? y
- При удалении из текущего каталога используйте префикс это с помощью
./
, чтобы избежать ошибочного удаления другого местоположения .:Выше было продемонстрировано использование$ cd something $ rm -v ./*~ removed ‘./file~’
./
. Если есть подкаталог, вы, конечно, также можете использоватьrm -v something/*~
. Осторожно: не думайте, чтоrm ./.*
удаляет все скрытые файлы в текущем каталоге. См. этот вопрос о Serverfault , чтобы узнать, как обойти скрытые файлы.- Переместить, а не удалить: вместо рекурсивного удаления файлов, в первую очередь я привык перемещать файлы, от которых я хочу избавиться, прежде чем окончательно удалить их. Если что-то пошло не так, его легко восстановить.
mv -b SOURCE DEST
- Используйте
find
(возможно, сgrep
) для предварительного просмотра , если вы хотите рекурсивно удалить выбранные файлы. Вы должны попытаться сделать это редким случаем, но если вам нужно ...find
без аргументов рекурсивно перечисляет все файлы / каталоги под текущим. Вы должны попытаться найтиman find
о том, как сделать его выборочным (сокровищница), но если вы не хотите беспокоиться, вы можете просто использовать знакомыйgrep
для фильтрации файлов, которые вы хотите удалить. Предположим, я хакер ядра uber-l33t, и меня беспокоит несколько килобайт "примеров" файлов в моем исходном дереве; Я хочу удалить все файлы, содержащие это имя. Поэтому я набираюfind | grep example
, что дает мне эти 20 файлов. Это выглядит неплохо, поэтому сейчас я иду и удаляю эти точные файлы вместе с ранее упомянутым подробным выводомrm -v
черезxargs
:find | grep example | xargs rm -vкоторый дает мне этот вывод. Такой предварительный просмотр предотвращает проблемы, где, например, вы делаете опечатку и печатаетеsample
вместоexample
.Приведенное выше решение не следует использовать, если у вас могут быть имена файлов, содержащие пробелы, символы табуляции, новые строки или кавычки (
"
или'
), поскольку это приведет кxargs
либо потерпеть неудачу, либо передатьrm
неполные имена файлов, что в худшем случае может привести к удалению неправильных файлов. Безопасный способ сделать это - сделать все это с помощью операторов и действийfind
.Далее будут показаны все файлы, содержащие слово
example
find . -name "*example*"
Если этот список содержит файлы, которые вы хотите удалить, используйте действие
-exec
, чтобы передать файлы вrm
.find . -name "*example*" -exec rm -v {} +
См. Использование Find для получения дополнительной информации. помогите с использованием
find
.
rm -r something
рекурсивно удаляет файлы и каталоги в / под что-то ; он потерпит неудачу только на элементах, для которых у него нет разрешения на удаление, либо потому, что они принадлежат другому пользователю (например, root
), либо потому, что они используются (например, монтирование GVFS).
Если вы не добавили -f
(как в rm -rf something
), вы получите что-то вроде:
rm: remove write-protected regular file ‘something’?
rm: descend into write-protected directory ‘something’?
В этот момент вы можете прервать работу, и вы, вероятно, поймете, что выполнили неправильную команду .
Примечание. Вики сообщества, каждый может принять участие.
- Для нескольких файлов используйте опцию
-i
, чтобы получить подтверждение об удалении файлов или каталогов:$ rm -ri something/ rm: remove regular file ‘something/file~’? y rm: descend into directory ‘something’? y rm: remove regular file ‘something/file’? y rm: remove directory ‘something’? y
- При удалении из текущего каталога используйте префикс это с помощью
./
, чтобы избежать ошибочного удаления другого местоположения .:Выше было продемонстрировано использование$ cd something $ rm -v ./*~ removed ‘./file~’
./
. Если есть подкаталог, вы, конечно, также можете использоватьrm -v something/*~
. Осторожно: не думайте, чтоrm ./.*
удаляет все скрытые файлы в текущем каталоге. См. этот вопрос о Serverfault , чтобы узнать, как обойти скрытые файлы.- Переместить, а не удалить: вместо рекурсивного удаления файлов, в первую очередь я привык перемещать файлы, от которых я хочу избавиться, прежде чем окончательно удалить их. Если что-то пошло не так, его легко восстановить.
mv -b SOURCE DEST
- Используйте
find
(возможно, сgrep
) для предварительного просмотра , если вы хотите рекурсивно удалить выбранные файлы. Вы должны попытаться сделать это редким случаем, но если вам нужно ...find
без аргументов рекурсивно перечисляет все файлы / каталоги под текущим. Вы должны попытаться найтиman find
о том, как сделать его выборочным (сокровищница), но если вы не хотите беспокоиться, вы можете просто использовать знакомыйgrep
для фильтрации файлов, которые вы хотите удалить. Предположим, я хакер ядра uber-l33t, и меня беспокоит несколько килобайт "примеров" файлов в моем исходном дереве; Я хочу удалить все файлы, содержащие это имя. Поэтому я набираюfind | grep example
, что дает мне эти 20 файлов. Это выглядит неплохо, поэтому сейчас я иду и удаляю эти точные файлы вместе с ранее упомянутым подробным выводомrm -v
черезxargs
:find | grep example | xargs rm -vкоторый дает мне этот вывод. Такой предварительный просмотр предотвращает проблемы, где, например, вы делаете опечатку и печатаетеsample
вместоexample
.Приведенное выше решение не следует использовать, если у вас могут быть имена файлов, содержащие пробелы, символы табуляции, новые строки или кавычки (
"
или'
), поскольку это приведет кxargs
либо потерпеть неудачу, либо передатьrm
неполные имена файлов, что в худшем случае может привести к удалению неправильных файлов. Безопасный способ сделать это - сделать все это с помощью операторов и действийfind
.Далее будут показаны все файлы, содержащие слово
example
find . -name "*example*"
Если этот список содержит файлы, которые вы хотите удалить, используйте действие
-exec
, чтобы передать файлы вrm
.find . -name "*example*" -exec rm -v {} +
См. Использование Find для получения дополнительной информации. помогите с использованием
find
.
find
безопасного способа, который не ломается (и, возможно, удаляет неправильные файлы), если имена файлов содержат пробел, символы табуляции, новой строки, "
или '
. Например. find . -name "*example*" -exec rm -v {} +
. mywiki.wooledge.org/UsingFind
– geirha
29 June 2012 в 15:45
find -delete
так опасно? Я бы сказал что-то здесь, но я не знаю, кроме того, что он недавно нашел и стер мой /
, несмотря на то, что при пробном запуске без опции -delete
было найдено только несколько файлов, которые я хотел удалить. Я вижу, что вы рекомендуете -exec rm
вместо этого.
– Takkat
30 June 2012 в 15:25
-delete
не опасен, и вы можете смело использовать его вместо -exec rm {} +
. Я обычно предпочитаю использовать стандартные инструменты и функции, когда это возможно. -delete
- это нестандартное расширение GNU для find
, поэтому оно будет нормально работать в Ubuntu, но может не работать в других системах.
– geirha
30 June 2012 в 15:35
См. Http://www.gnu.org/software/bash/manual/bashref.html#Tilde-Expansion для получения дополнительной информации о том, как расширение тильды работы.
Да. Тильда без кавычек в качестве отдельного аргумента распространяется на ваш домашний каталог. Итак, rm -r ~
расширен до rm -r /home/yourusename
. Итак, вы сказали rm рекурсивно удалить все файлы в вашем домашнем каталоге.
См. http://www.gnu.org/software/bash/manual/bashref.html#Tilde-Expansion подробнее о том, как работает расширение тильды.
Да. Тильда без кавычек в качестве отдельного аргумента распространяется на ваш домашний каталог. Итак, rm -r ~
расширен до rm -r /home/yourusename
. Итак, вы сказали rm рекурсивно удалить все файлы в вашем домашнем каталоге.
См. http://www.gnu.org/software/bash/manual/bashref.html#Tilde-Expansion подробнее о том, как работает расширение тильды.
Да. Тильда без кавычек в качестве отдельного аргумента распространяется на ваш домашний каталог. Итак, rm -r ~
расширен до rm -r /home/yourusename
. Итак, вы сказали rm рекурсивно удалить все файлы в вашем домашнем каталоге.
См. http://www.gnu.org/software/bash/manual/bashref.html#Tilde-Expansion подробнее о том, как работает расширение тильды.
Да. Тильда без кавычек в качестве отдельного аргумента распространяется на ваш домашний каталог. Итак, rm -r ~
расширен до rm -r /home/yourusename
. Итак, вы сказали rm рекурсивно удалить все файлы в вашем домашнем каталоге.
См. http://www.gnu.org/software/bash/manual/bashref.html#Tilde-Expansion подробнее о том, как работает расширение тильды.
Да. Тильда без кавычек в качестве отдельного аргумента распространяется на ваш домашний каталог. Итак, rm -r ~
расширен до rm -r /home/yourusename
. Итак, вы сказали rm рекурсивно удалить все файлы в вашем домашнем каталоге.
См. http://www.gnu.org/software/bash/manual/bashref.html#Tilde-Expansion подробнее о том, как работает расширение тильды.
Да. Тильда без кавычек в качестве отдельного аргумента распространяется на ваш домашний каталог. Итак, rm -r ~
расширен до rm -r /home/yourusename
. Итак, вы сказали rm рекурсивно удалить все файлы в вашем домашнем каталоге.
См. http://www.gnu.org/software/bash/manual/bashref.html#Tilde-Expansion подробнее о том, как работает расширение тильды.
Да. Тильда без кавычек в качестве отдельного аргумента распространяется на ваш домашний каталог. Итак, rm -r ~
расширен до rm -r /home/yourusename
. Итак, вы сказали rm рекурсивно удалить все файлы в вашем домашнем каталоге.
См. http://www.gnu.org/software/bash/manual/bashref.html#Tilde-Expansion подробнее о том, как работает расширение тильды.
Да. Тильда без кавычек в качестве отдельного аргумента распространяется на ваш домашний каталог. Итак, rm -r ~
расширен до rm -r /home/yourusename
. Итак, вы сказали rm рекурсивно удалить все файлы в вашем домашнем каталоге.
См. http://www.gnu.org/software/bash/manual/bashref.html#Tilde-Expansion подробнее о том, как работает расширение тильды.