Eu sei como renomear arquivos no Unix:
$ mv ~/folder/subfolder/file.txt ~/folder/subfolder/file.sh
^-------this part------^ ^------this part-------^
Leva muito tempo para repetir ~/folder/subfolder/file
duas vezes.
Existe uma maneira mais rápida?
rename
.rename
seja uma solução melhor, porquerename
nunca peça para você substituir o arquivo existente ou não.Você também pode usar
rename
(parte do pacote util-linux).Veja a página de manual renomear para mais detalhes.
fonte
{a,b}
funcionalidade dos shells .rename
é um programa totalmente diferente, baseado em perl. Lá, você usariarename 's/txt$/sh/' ~/folder/subfolder/file.txt
.mmv
.Todos os itens acima são bons. Isso também funcionaria:
fonte
sudo
peça.sudo
?sudo
ele interpreta~
como o diretório inicial da raiz.sudo
omv
, mas nãocd
. Veja porque cd é um shell construído em E você não pode.sudo
O(
Não. Você precisa fornecer o caminho completo para o arquivo para renomeá-lo. A única alternativa é mover para a pasta de destino antes de executar o
mv
:Como alternativa, você pode escrever uma pequena função que renomeia o arquivo no diretório de destino. Por exemplo, adicione estas linhas ao seu arquivo de inicialização do shell (
~/.bashrc
se você estiver usandobash
):Em seguida, abra um novo terminal ou apenas execute
source ~/.bashrc
para reler o arquivo init e você pode:fonte
lmv()
função. Eu não sabia que :)Apenas para expandir a utilidade da resposta de cuonglm (para não aceitar o crédito que eu adoro a solução dele) e a resposta dele é correta.
O caso de uso é que geralmente queremos mv um arquivo em um local remoto (o problema real), por exemplo, /folder/subfolder/configFile.dat TO configFile.dat.orig
Este formulário do comando adiciona uma extensão de arquivo (não substituindo a extensão original)
Explicado: "{, .orig}" significa substituir (nada) no final do nome do arquivo por (algo) ".orig"
OU para remover uma extensão de arquivo (inverta a renomeação)
Nota: Ainda no tópico "Maneira mais rápida de renomear arquivos sem redigitar o caminho do diretório"
fonte
Sim. Se você usa
bash
, você usasudo pushd ~/folder/subfolder/ && sudo mv ./file.txt ./file.sh && popd
.O que é realmente maior e poderá falhar se você perder as permissões de acesso ao diretório original quando o fez
popd
.fonte
pushd
epopd
aqui? Como isso é melhor do quecd ~/folder/subfolder/ && sudo mv file.txt file.sh
?pushd
popd
é usarcd
e voltar comcd -
.popd
é melhor do quecd ../../
, quando disponível.(cd /path/to/there && mv x y)
então (com um subshell)sudo
antespushd
. Portanto, o comando completo deve serpushd ...dir && sudo mv old new && popd
. Como alternativa, você poderia fazer isso(cd ...dir; sudo mv old new)
porque a execução no subshell cuidará das alterações de diretório automaticamente.