ОДН-вкладыш который можно легко напечатать прямо от стержня:
for f in *.md; do mv "$f" "test - $f"; done
или переписывается в отдельные строки с помощью точки с запятой:
for f in *.md
do
mv "$f" "test - $f"
done
экспозиция
синтаксис for
(in sh
):
for NAME [in WORDS ... ] ; do COMMANDS; done
здесь,NAME
is 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