One-liner que se puede escribir fácilmente directamente desde la terminal:
for f in *.md; do mv "$f" "test - $f"; done
O reescrito en líneas separadas en lugar de punto y coma:
for f in *.md
do
mv "$f" "test - $f"
done
Exposición
Sintaxis de for
(in sh
):
for NAME [in WORDS ... ] ; do COMMANDS; done
Aquí, nuestro NAME
es f
y nuestro WORDS
son todos los archivos en el directorio actual *.md
. Por lo tanto, la variable $f
se sustituirá con cada archivo que coincida *.md
.
Entonces para a.md
:
mv "$f" "test - $f"
se convierte
mv "a.md" "test - a.md"
Las comillas son importantes porque cada nombre de archivo $f
puede contener espacios. De mv
lo contrario , pensaría que cada palabra era un archivo separado. Por ejemplo, si no hubiera comillas, y hay un archivo llamado Foo Bar.md
, se traduciría como:
mv Foo Bar.md test - Foo Bar.md
que no funcionaría según lo previsto. Pero al incluir $f
comillas, tiene sentido:
mv "Foo Bar.md" "test - Foo Bar.md"
Observando la sintaxis de for
, también puede cambiar el nombre de un subconjunto de todos los *.md
archivos nombrando cada uno explícitamente:
for f in a.md b.md d.md; do mv "$f" "Test - $f"; done
O usando la expansión de shell:
for f in {a,b,d}.md; do mv "$f" "Test - $f"; done