mv
É uma linha de comando básica projetada para fazer uma coisa e fazer bem (filosofia Unix): mover arquivo (s) ou diretório (s) .
Você pode hackear STDOUT
& STDIN
¹ para modificar rapidamente a string de destino, mas não é apenas um hack inteligente
renomear (o de Perl)
Existem outras ferramentas com o mesmo nome que podem ou não conseguir fazer isso, portanto, tenha cuidado.
Quando as pessoas falam rename
, pensamos neste, não no ELF
, menos poderoso (mágica?).
Não é básico, é Perl. Você pode passar algumas funções do Perl por dentro, e é extremamente poderoso.
Considere este exemplo:
Você deseja renomear um monte de arquivos como
foobar_1.txt
foobar_2.txt
foobar_3.txt
Você pode acrescentar zeros aos dígitos da sprintf()
seguinte forma (usando regex, heh, é Perl: D):
rename 's/(\d+)/sprintf("%04d", $1)/e' foobar_*.txt
Agora você tem :
foobar_0001.txt
foobar_0002.txt
foobar_0003.txt
Não é realmente um comando básico, não é?
renomear não é realmente projetado para mover dir (s) , mas pode fazê-lo:
$ mkdir -p /tmp/foo/bar/base
$ touch /tmp/foo/bar/base/file
$ rename 's!/tmp/foo/bar/base/file!/tmp/file!' /tmp/foo/bar/base/file
O arquivo movido
/tmp/file
¹ algum código que vemos nos *.stackexchange.*
sites
for FILE in `ls *.txt`
do
mv ${FILE} `echo ${FILE} | sed 's/anything_ugly/anything_still_ugly/'`
done
Não é o caminho a seguir , é simplesmente um buggy, apenas para explicar por que usar a ferramenta certa no momento certo
type -a rename
erename --version
?