1

由于搞砸了我的第一次尝试,我现在有一个充满文件的目录,这些文件现在命名如下:

valery-special-music-poetry.txt.mtxt.md.md.txt.mtxt.md.md.md

我需要命名:

valery-special-music-poetry.md

如何从命令行执行此操作?

我正在运行:GNU bash,版本 3.2.48(1)-release (x86_64-apple-darwin12)

4

4 回答 4

3
for file in *; do mv "$file" "${file/.*./.}"; done
于 2012-11-05T07:33:34.683 回答
3

壳牌本身:

for i in *; do mv "$i" "${i%%.*}.${i##*.}"; done

除非你的目录是单级的,否则我建议使用 find,如果你在 Apple 中有的话。

于 2012-11-05T07:46:52.667 回答
2

这可能会帮助你

#!/bin/bash
for filename in *
do
    x=`echo $filename | sed 's/\..*\./\./g'`
    mv $filename $x
done

将其保存到名为 rename.sh 的文件中

chmod +x rename.sh
./rename.sh
于 2012-11-05T07:26:30.653 回答
0
ls -1 *.txt.mtxt.md.md.txt.mtxt.md.md.md | nawk -F"." '{cmd="mv "$0" "$1".md";system(cmd)}'
于 2012-11-05T07:25:49.870 回答