$ for f in * ; do mv "$f" Unix_"$f" ; done
Renomeie todos os arquivos dentro de uma pasta com o prefixo “Unix_”, isto é, suponha que uma pasta tenha dois arquivos a.txt e b.pdf do que ambos devem ser renomeados de um único comando para Unix_a.txt e Unix_b.pdf
$ for f in * ; do mv "$f" Unix_"$f" ; done
O comando renomear pode renomear arquivos usando expressões regulares , o que torna muito poderoso. No seu caso, você poderia fazer
rename 's/(.*)/Unix_$1/' *.txt
Se você estiver usando Zsh como seu shell, você também pode usar a função zmv
.
Adicione esta linha ao seu .zshrc
:
autoload -U zmv
você pode executar:
% zmv -W '*' 'Unix_*'
Consulte man zshcontrib
para obter mais informações.
Com o utilitário rename
incluído no pacote util-linux
(aquele na resposta do dj_segfault vem do perl), você pode fazer rename '' Unix_ *
Algumas das outras respostas podem ser melhores, no entanto, se eu achasse que xargs merecia uma menção já que é uma ferramenta muito poderosa (e em muitos sistemas):
Neste particular, você poderia fazer:
ls | xargs -n1 -I{} mv {} Unix_{}
Editar: Retraído por comentário de Gilles . Para esta situação, esta solução deve ser considerada apenas um truque devido às ressalvas, conforme apontado pelo artigo citado. As outras respostas são muito melhores. Eu ainda acho que xargs
ainda é uma ferramenta útil (eu uso com svn status
com relativa frequência), mas ele está certo, por simples executar algum comando em todos os arquivos em uma árvore de diretórios, esta não é a resposta e encontrar é muito melhor. (Deixando a resposta, já que acho que o comentário é bom para pessoas que cometem o mesmo erro).
Tags rename