Как выполнять операции над файлами или каталогами с тире или дефисами? [закрыто]

Мой вопрос в том, что я пытаюсь переименовать файл с именем 12F-XYZ.pdf в 13F-XYX_ABX.pdf.

Теперь возникает проблема, которая заключается в том, что оба дефиса в оригинальном и требуемом именах имеют дефисы. Я знаю, что для пробелов мы используем \, чтобы преодолеть проблему, но что мы можем сделать в случае дефиса или любого другого символа, который может вызвать проблему, как это происходит не только с командой rename, но и с любой другой командой.

1
задан 2 March 2015 в 11:05

1 ответ

Поскольку 'David Foerster' указал, что дефис (-) не рассматривает особенно оболочка. Таким образом, насколько Ваш пример обеспокоен, что можно просто сделать:

mv 12F-XYZ.pdf 13F-XYX_ABX.pdf

, Но если у Вас есть пространство или литеральный символ ESC (обратная косая черта) или кто-либо другой, которого нужно оставить, можно выйти из тех или с символом ESC т.е. \ или поставить целое имя в кавычках '' так, чтобы содержание в кавычках рассматривали буквально.

Вот пример:

mv 12F-XYZ.pdf 50M -XYZ.pdf  ##Wrong
mv 12F-XYZ.pdf 50M\ -XYZ.pdf  ##Right
mv 12F-XYZ.pdf '50M -XYZ.pdf'  ##Right

эмпирическое правило А должно было бы выйти из него в то время как в сомнении. Это было бы очень хорошим чтением для Вас.

РЕДАКТИРОВАНИЕ: , Поскольку 'muru' указал, что у Вас будет проблема в случае, если ведущий дефис. В этом случае можно использовать любое из следующего:

mv -- foo.bar -foo.bar
mv foo.bar ./-foo.bar

Эти -- указывает на конец переключателя для предыдущей команды (в этом случае mv). Также обратите внимание, что не все поддержки команд --, таким образом, Вы лучше использовали бы вторую опцию (./-foo.bar).

5
ответ дан 10 November 2019 в 08:22

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

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