在一个目录中,我有一些*.html文件。我想把它们都重命名为*.txt
我该怎么做呢?我使用bash shell。
在一个目录中,我有一些*.html文件。我想把它们都重命名为*.txt
我该怎么做呢?我使用bash shell。
当前回答
这为我工作在OSX从.txt到.txt_bak
find . -name '*.txt' -exec sh -c 'mv "$0" "${0%.txt}.txt_bak"' {} \;
其他回答
不幸的是,可移植并不是一件简单的事情。你可能需要一点魔法。
for file in *.html; do echo mv -- "$file" "$(expr "$file" : '\(.*\)\.html').txt"; done
一旦你满意了,就把回声移开,它会按你想的做。
Edit: basename对于这种特殊情况可能可读性更好一些,尽管expr通常更灵活。
如果使用bash,则不需要使用sed、basename、rename、expr等外部命令。
for file in *.html
do
mv "$file" "${file%.html}.txt"
done
最简单的方法是使用重命名。ul它出现在大多数Linux发行版中
重命名。ul -o -v [oldFileExtension] [newFileExtension][搜索要应用的文件的表达式]
rename.ul -o -v .oldext .newext *.oldext
选项:
-o:不覆盖预先存在的. newnext
- v:详细
-n:演练
你也可以在Bash中创建一个函数,将它添加到。bashrc或其他文件中,然后在任何你想使用的地方使用它。
change-ext() {
for file in *.$1; do mv "$file" "$(basename "$file" .$1).$2"; done
}
用法:
change-ext css scss
源代码的功能:https://stackoverflow.com/a/1224786/6732111
这为我工作在OSX从.txt到.txt_bak
find . -name '*.txt' -exec sh -c 'mv "$0" "${0%.txt}.txt_bak"' {} \;