Удаление странных каталогов в Unix

У меня возникли проблемы с удалением некоторых папок в Unix.

Каталог 1:

?0\'

Каталог 2:

-1\'

Я хотел бы удалить их рекурсивно, так что-то вроде

rm -rf -1\'

Не уверен, как избежать кавычек, тире и вопросительных знаков.

2 ответа

Решение

Вы должны использовать кавычки, когда они являются подозрительными, а затем использовать подстановочный знак вне кавычек. Без кавычек эти персонажи захотят выполнить другие задачи.

rm -rf -- *"\'"

Благодаря комментарию от osgx

Быть осторожен; внимательно проверьте перед выполнением rm -fr на странные имена каталогов.

Стандартный трюк для имен файлов (каталогов), начинающихся с тире - это префикс имени с ./ так что это не начинается с - больше:

rm -fr ./-1??

Другой каталог может быть идентифицирован по:

rm -fr ./?0??

Я бы, по крайней мере, запустить:

echo ./-1?? ./?0??

прежде чем пытаться rm команды, чтобы гарантировать, что только правильные каталоги выбраны. rm Команда опасна, если вы не уверены, что она делает то, что вы хотите.

Обозначение, использующее знаки вопроса, позволяет избежать необходимости заключать в кавычки знаки вопроса, обратную косую черту и одинарные кавычки, частично из-за подозрения, что то, что отображается на терминале, может не быть именем в файловой системе. Возможно, вам придется проделать дополнительную работу, чтобы определить имена, такие как ls | od -c или аналогичные команды для проверки правильности написания имен каталогов.

Другие вопросы по тегам