Bash é bom para isso.
for FILE in eventDataLog.txt.2015*; do mv "$FILE" "abc-$FILE"; done
Eu tenho vários arquivos no meu diretório. por exemplo:
eventDataLog.txt.2015-04-23-22
eventDataLog.txt.2015-04-23-23
eventDataLog.txt.2015-04-24-01
eventDataLog.txt.2015-04-24-02
eventDataLog.txt.2015-04-24-03
eventDataLog.txt.2015-04-24-04
e eu quero mudar todos eles para
abc-eventDataLog.txt.2015-04-23-22
abc-eventDataLog.txt.2015-04-23-23
abc-eventDataLog.txt.2015-04-24-01
abc-eventDataLog.txt.2015-04-24-02
abc-eventDataLog.txt.2015-04-24-03
abc-eventDataLog.txt.2015-04-24-04
Como posso usar o comando mv para executar esta tarefa? Eu tenho usado isso
mv eventDataLog.txt.2015-* ec2prod-eventDataLog.txt.2015-*
mv: target ‘ec2prod-eventDataLog.txt.2015-*’ is not a directory
mas não funciona
mas lembre-se que eu tenho muitos outros arquivos nesse diretório, então a resposta seria apropriada e também eu tenho que ignorar este arquivo eventDataLog.txt porque é um arquivo atual e em uso.
Bash é bom para isso.
for FILE in eventDataLog.txt.2015*; do mv "$FILE" "abc-$FILE"; done
Você pode fazer isso usando o rename
comamnd. No seu caso, você faria rename eventDataLog.txt.2015 abc-eventDataLog.txt.2015 eventDataLog.txt*
.
A sintaxe usada é rename frompattern topattern listoffilessuchaswildcardmatch
.
Eu usaria a ferramenta mmv
e fiz
mmv eventDataLog.txt.\* abc-eventDataLog.txt.\#1
que é especificamente projetado para fazer renomeações em massa.
for FILE in $(ls -1 | egrep '^eventDataLog' | egrep -v '^eventDataLog.txt$'); do mv $FILE abc-$FILE; done
egrep
é a versão com capacidade de regex de grep
e está incluída com grep
na maioria das distribuições egrep
filtrará todos os arquivos, começando com "eventDataLog" egrep
filtrará todos os arquivos que não (observe -v
anotando uma correspondência inversa ) corresponder ao nome completo do arquivo que você deseja ignorar $ ls -1
eventDataLog.txt
eventDataLog.txt.2015-04-23-22
eventDataLog.txt.2015-04-23-23
eventDataLog.txt.2015-04-24-01
eventDataLog.txt.2015-04-24-02
eventDataLog.txt.2015-04-24-03
eventDataLog.txt.2015-04-24-04
myOtherFile
mySecondOtherFile
$ for FILE in $(ls -1 | egrep '^eventDataLog' | egrep -v '^eventDataLog.txt$'); do mv $FILE abc-$FILE; done
$ ls -1
abc-eventDataLog.txt.2015-04-23-22
abc-eventDataLog.txt.2015-04-23-23
abc-eventDataLog.txt.2015-04-24-01
abc-eventDataLog.txt.2015-04-24-02
abc-eventDataLog.txt.2015-04-24-03
abc-eventDataLog.txt.2015-04-24-04
eventDataLog.txt
myOtherFile
mySecondOtherFile