O Linux renomeia usando parâmetros e espaços?

0

É possível, no Linux, renomear um arquivo de algo sem espaços para algo que contenha espaços?

Eu sei que posso criar diretórios e arquivos com espaços fazendo:% mkdir "new dir" e:% touch "new file.txt"

Eu quero renomear os arquivos de: imgp0882.jpg para algo como: 20091231 1243 some topic.jpg

E como seria a aparência em um script de shell que usa parâmetros como:
for i in *.jpg do
rename "$i" "$somepath/$mydate $mytime $mytopic$extension"

?

Um pouco de experiência:

  • Sou novo no Linux (usando o PCLinuxOS 2009.2), vindo do Windows, e escrevi um pequeno shell script para baixar arquivos da minha câmera e depois renomeá-los automaticamente de acordo com um padrão de data e tópico. Como você pode adivinhar até agora, estou preocupado em renomear.
  • Se você quiser ver meu script, aqui está uma cópia .
  • Eu não estou usando jhead para essa renomeação, porque isso só funciona com arquivos JPEG, mas eu quero uma solução única para qualquer formato de mídia, incluindo vídeos.
por Torben Gundtofte-Bruun 26.01.2010 / 22:56

2 respostas

2

Talvez você precise apenas colocar aspas ao redor do caminho de destino todo ? Por exemplo,

$ 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
    
por 26.01.2010 / 23:22
2

Se você estiver usando bash, escape com barra invertida nos espaços:

My\ File\ Name.jpg

    
por 26.01.2010 / 23:00