Однострочник, который можно легко набирать прямо с терминала:
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