Я играю с FTP через командную строку и у меня возникают две проблемы. Я не могу переименовывать или входить в папки, например:
dir /home/folder1/Human (2012)
Я пытался:
cd ~/folder1/Human\ (2012)
Здесь я получаю сообщение, что the folder does not exist
.
mv ~/folder1/Human\ (2012)
В этом случае я получаю сообщение следующего содержания:
syntaxfailure at (
Как я могу решить эту проблему?
решение1
Вы можете заключить свой путь в двойные кавычки:
cd ~/"folder1/Human (2012)"
или вы должны указать escape-последовательность для (
, )
и (пробел) (так как это специальные символы):
cd ~/folder1/Human\ \(2012\)
и
mv ~/"folder1/Human (2012)"
С последовательностью выхода:
mv ~/folder1/Human\ \(2012\)
решение2
У вас правильная идея с \
перед пробелом. Это касается всех специальных символов, включая скобки. Поставьте обратную косую черту перед открывающейся скобкой и еще одну обратную косую черту перед закрывающейся скобкой, и это сработает.
В таких случаях полезно автодополнение Tab... если вы начнете вводить имя файла, а затем нажмете Tab, он автоматически дополнит оставшуюся часть имени файла, вставляя обратные косые черты, где это необходимо. (Если вы не ввели достаточную часть имени файла, чтобы было ясно, какой файл вы имеете в виду, bash все равно автоматически дополнит всю часть имени файла, насколько это возможно. Нажатие Tab дважды покажет список возможных вариантов дополнения имени файла.)
решение3
Я согласен со snoop, что это можно сделать, используя "
метки при указании файла или каталога.
Однако, если есть целая куча каталогов, которые нужно переименовать, вы можете использовать , rename
чтобы переименовать их в более понятные имена. Rename работает аналогично, за sed
исключением того rename
, что переименовывает файлы и каталоги, тогда как sed
обычно используется для редактирования содержимого файлов. Вот пример:
rename 's/ //g;s/\(//g;s/\)//g' ~/folder1/*
Итак, если у вас есть следующие каталоги, расположенные в ~/folder1
:
Human (2012)
Human (2011)
Human (2010)
Вместо этого они будут переименованы следующим образом:
Human2012
Human2011
Human2010
Для получения дополнительной информации выполните следующую команду:
man rename