在一个目录中,我有一些*.html文件。我想把它们都重命名为*.txt
我该怎么做呢?我使用bash shell。
在一个目录中,我有一些*.html文件。我想把它们都重命名为*.txt
我该怎么做呢?我使用bash shell。
当前回答
rename 's/\.html$/\.txt/' *.html
这正是你想要的。
其他回答
有关更好的解决方案(只有bash功能,而不是外部调用),请参阅其他答案之一。
下面的操作会做,但不需要系统有重命名程序(尽管你经常在系统上有这个程序):
for file in *.html; do
mv "$file" "$(basename "$file" .html).txt"
done
编辑:正如评论中指出的那样,这对于没有适当引用的空格的文件名(现在添加到上面)不起作用。当你只在你自己的文件中工作时,你知道文件名中没有空格,这是可以工作的,但是当你写一些可能在以后被重用的东西时,不要跳过适当的引用。
对于Ubuntu用户:
rename 's/\.html$/\.txt/' *.html
这是我用来重命名。edge文件为。blade.php
for file in *.edge; do mv "$file" "$(basename "$file" .edge).blade.php"; done
很有魅力。
这是一次修改多个扩展的好方法:
for fname in *.{mp4,avi}
do
mv -v "$fname" "${fname%.???}.mkv"
done
注意:注意在扩展的大小是相同的(??)
在Linux或window git bash或window的wsl中,尝试以下命令,只需一行代码就可以更改当前目录或子目录甚至其子目录中的每个文件的扩展名
find . -depth -name "*.html" -exec sh -c 'mv "$1" "${1%.html}.txt"' _ {} \;