Один вкладиш, який можна легко набрати прямо з терміналу:
for f in *.md; do mv "$f" "test - $f"; done
Або переписати окремими рядками замість крапки з комою:
for f in *.md
do
mv "$f" "test - $f"
done
Експозиція
Синтаксис for
(в sh
):
for NAME [in WORDS ... ] ; do COMMANDS; done
Тут наш NAME
є f
і наші WORDS
всі файли в поточному каталозі відповідно *.md
. Таким чином, змінна $f
буде замінена кожним відповідним файлом *.md
.
Отже для a.md
:
mv "$f" "test - $f"
стає
mv "a.md" "test - a.md"
Лапки важливі, оскільки кожне ім'я файлу $f
може містити пробіли. Інакше можна mv
було б подумати, що кожне слово є окремим файлом. Наприклад, якщо не було лапок, а є файл, який називається Foo Bar.md
, це перекладається як:
mv Foo Bar.md test - Foo Bar.md
який би не працював так, як задумано. Але, загортаючи $f
цитати, має сенс:
mv "Foo Bar.md" "test - Foo Bar.md"
Відзначаючи синтаксис for
, ви також можете перейменувати підмножину всіх *.md
файлів, називаючи кожен чітко:
for f in a.md b.md d.md; do mv "$f" "Test - $f"; done
Або за допомогою розширення оболонки:
for f in {a,b,d}.md; do mv "$f" "Test - $f"; done