Возможно ли в Linux переименовать файл из чего-то без пробелов во что-то, содержащее пробелы?

Я знаю, что могу создавать каталоги и файлы с пробелами, выполнив:
mkdir "new dir" и:
touch "new file.txt"

Я хочу переименовать файлы из:
imgp0882.jpg что-то вроде:
20091231 1243 some topic.jpg

И как это будет выглядеть в сценарии оболочки, который использует такие параметры, как:
for i in *.jpg do
rename "$i" "$somepath/$mydate $mytime $mytopic$extension"

?

Немного предыстории:

  • Я новичок в Linux (использую PCLinuxOS 2009.2), пришедший из Windows, и я написал небольшой сценарий оболочки для загрузки файлов с моей камеры, а затем автоматически переименовываю их в соответствии с шаблоном даты и темы. Как вы уже догадались, я немного застрял в переименовании.
  • Если вы хотите увидеть мой сценарий, вот копия.
  • Я не использую jhead для этого переименования, потому что это работает только с файлами JPEG, но я хочу одно решение для любого медиаформата, включая видео.

2 ответа2

2

Если вы используете bash, используйте обратную косую черту:

My\ File\ Name.jpg

2

Может быть, вам нужно просто поставить кавычки вокруг всего пути назначения? Например

$ touch test
$ a=one
$ b=two
$ mv "test" "$a $b"
$ ls -la
total 8
-rw-r--r--  1 whitequark whitequark    0 2010-01-27 01:21  
-rw-r--r--  1 whitequark whitequark    0 2010-01-27 01:20   
drwxr-xr-x  2 whitequark whitequark 4096 2010-01-27 01:21 .
drwxr-xr-x 80 whitequark whitequark 4096 2010-01-27 01:16 ..
-rw-r--r--  1 whitequark whitequark    0 2010-01-27 01:21 one two

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .