Uma linha que pode ser facilmente digitada diretamente do terminal:
for f in *.md; do mv "$f" "test - $f"; done
Ou reescrito em linhas separadas usando ponto e vírgula:
for f in *.md
do
mv "$f" "test - $f"
done
Exposição
Sintaxe de for (em sh ):
for NAME [in WORDS ... ] ; do COMMANDS; done
Aqui, nosso NAME é f e nosso WORDS são todos os arquivos no diretório atual que correspondem a *.md . Portanto, a variável $f será substituída por cada arquivo correspondente a *.md .
Então, para a.md :
mv "$f" "test - $f"
torna-se
mv "a.md" "test - a.md"
As aspas são importantes porque cada nome de arquivo $f pode conter espaços. Caso contrário, mv pensaria que cada palavra era um arquivo separado. Por exemplo, se não houver cotações e houver um arquivo chamado Foo Bar.md , ele será traduzido como:
mv Foo Bar.md test - Foo Bar.md
que não funcionaria como desejado. Mas ao colocar $f entre aspas, faz sentido:
mv "Foo Bar.md" "test - Foo Bar.md"
Observando a sintaxe de for , você também pode renomear um subconjunto de todos os arquivos *.md nomeando cada um explicitamente:
for f in a.md b.md d.md; do mv "$f" "Test - $f"; done
Ou usando a expansão do shell:
for f in {a,b,d}.md; do mv "$f" "Test - $f"; done