一个 unix 命令中的多个 unix glob

Multiple unix globs in one unix command

假设我在一个文件夹中有 3 个文本文件,one.txttwo.txtthree.txt。我想将它们全部更改为降价文件。愚蠢的方法是...

mv one.txt one.md
mv two.txt two.md
mv three.txt three.md

我想要执行此操作的方式类似于 mv *.txt *.md,但它不起作用。很明显,球体(*'s)没有像我认为的那样工作。所以我想我想做的是...

mv *.txt CAPTURED_GLOB_ITERANT.md

感谢任何帮助!

shell 不会以允许执行您想要的方式捕获模式,并且 mv 本身也不会这样做。所以,使用 mv 你仍然需要一个循环:

for f in *.txt; do mv -- "$f" "${f%.txt}.md"; done

如果你想用一个命令做到这一点,你需要一个专门的实用程序,例如 rename:

rename 's/\.txt\z/.md/' *.txt