Как я могу войти, а также переименовать папки, такие как "Human (2012)"?

Я играю с FTP через командную строку, и я получаю две проблемы. Я не могу переименовать или ввести папки, такие как:

dir /home/folder1/Human (2012)

Я старался:

cd ~/folder1/Human\ (2012)

Здесь я получаю сообщение, что the folder does not exist,

mv ~/folder1/Human\ (2012)

В этом случае я получаю сообщение, которое говорит:

syntaxfailure at (

Как я могу решить эту проблему?

3 ответа

Вы можете дважды указать свой путь:

cd ~/"folder1/Human (2012)"

или вы должны предоставить escape-последовательность для (,) а также (пробел) (так как это специальные символы):

cd ~/folder1/Human\ \(2012\)

а также

mv ~/"folder1/Human (2012)"

С escape-последовательностью:

mv ~/folder1/Human\ \(2012\)

У вас есть правильная идея с \ перед космосом. Это относится ко всем специальным символам, включая круглые скобки. Поставьте обратную косую черту перед открытым пареном и еще одну обратную косую черту перед закрытой пареню, и это сработает.

Заполнение табуляции полезно в этих случаях... если вы начнете вводить имя файла и затем нажмете клавишу Tab, оно автоматически завершит оставшуюся часть имени файла, вставив при необходимости обратную косую черту. (Если вы не ввели достаточно имени файла, чтобы оно однозначно указывало, какой файл вы имеете в виду, bash по-прежнему будет автоматически заполнять столько имен файлов, сколько сможет. Двойное нажатие клавиши tab покажет список возможных дополнений имени файла.)

Я согласен с Snoop, что способ сделать это заключается в использовании " отмечается при указании файла или каталога.

Однако, если существует целый ряд каталогов, которые необходимо переименовать, вы можете использовать rename переименовать их в более дружественные имена. Переименовать работает аналогично sed Кроме rename переименовывает файлы и каталоги, тогда как sed обычно используется для редактирования содержимого файлов. Вот пример:

rename 's/ //g;s/\(//g;s/\)//g' ~/folder1/*

Итак, если у вас есть следующие каталоги, расположенные в ~/folder1:

Human (2012)
Human (2011)
Human (2010)

вместо этого они будут переименованы в это:

Human2012
Human2011
Human2010

Запустите следующую команду для получения дополнительной информации:

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