Renomeia o arquivo em outro diretório sem repetir o caminho [duplicado]

7

Muitas vezes preciso fazer uma pequena alteração em um arquivo aninhado em vários diretórios abaixo do meu diretório de trabalho atual. Como é apenas um arquivo, e globbing / scripting seria um exagero, eu faço a alteração manualmente.

Por exemplo, preciso renomear o arquivo blaz.txt in ./foo/bar/blee para foobar.txt :

. 
|--foo
  |--bar
     | blee
       |-- blaz.txt

Normalmente, faço isso por cd '% to blee e executando mv blaz.txt foobar.txt para arquivos únicos. Eu sei que eu poderia digitar os caminhos completos (descansando em algumas conclusões de guias úteis para acelerar as coisas), mas eu preferiria algo mais rápido.

Existe uma maneira melhor de fazer isso?

    
por Nick Tomlin 29.05.2013 / 23:05

5 respostas

16

Com a expansão de chaves:

mv foo/bar/blee/{blaz,foobar}.txt
    
por 29.05.2013 / 23:20
5
> touch tmp/foo/bar/baz
> rename baz boo tmp/foo/bar/baz
> ls -l tmp/foo/bar/
total 0
-rw-r--r-- 1 hl hauke 0 May 29 23:08 boo
    
por 29.05.2013 / 23:10
4

Você pode usar um subshell.

( cd foo/bar/blee ; mv blaz.txt boo.txt )

Mas eu tive que marcar com +1 o exemplo das chaves. Isso é excelente.

    
por 30.05.2013 / 00:10
3

Você pode salvar o caminho foo=/tmp/foo/bar em seu ambiente e usá-lo como atalho.

 mv $foo/blaz.txt $foo/foobar.txt 

ou

 mv $foo/{blaz,foobar}.txt
    
por 29.05.2013 / 23:33
0

Se ele não ficar muito confuso, você poderá criar um link simbólico e passar os comandos para ele mesmo.

Um guia para criar links simbólicos: link

Atualize do comentário abaixo: ln -s /directory/thats/super/long/and/a/pita/ /etc/goats/ e, em seguida, mv /etc/goats/foo.txt /etc/goats/bar.txt Vale a pena tentar.

    
por 29.05.2013 / 23:09

Tags