Renomeia todos os arquivos dentro de uma pasta com o prefixo “Unix_”

4

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

    
por user7470 14.05.2011 / 06:23

5 respostas

12

$ for f in * ; do mv "$f" Unix_"$f" ; done
    
por 14.05.2011 / 07:21
7

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
    
por 14.05.2011 / 07:21
2

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.

    
por 14.05.2011 / 10:31
2

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_ *

    
por 14.05.2011 / 21:52
0

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).

    
por 15.05.2011 / 00:26

Tags