在一个目录中,我有一些*.html文件。我想把它们都重命名为*.txt
我该怎么做呢?我使用bash shell。
在一个目录中,我有一些*.html文件。我想把它们都重命名为*.txt
我该怎么做呢?我使用bash shell。
当前回答
在Mac上……
如果你没有安装rename: brew Install rename 重命名-S .html .txt *.html
其他回答
命令mmv似乎对大量文件(每秒数万个)非常有效地完成这项任务。例如,要将所有.xml文件重命名为.html文件,使用以下命令:
mmv ";*.xml" "#1#2.html"
的;将匹配路径,*将匹配文件名,这些在替换名称中被称为#1和#2。
基于exec或管道的答案要么太慢,要么在大量文件上失败。
在别人的网站抓取之后,我发现成千上万的文件都没有。html扩展名,在一大堆子目录中。
要一次性重命名它们,除了已经有.html扩展名的文件(大多数文件根本没有扩展名),这对我来说很管用:
cd wwwroot
find . -xtype f \! -iname *.html -exec mv -iv "{}" "{}.html" \; # batch rename files to append .html suffix IF MISSING
在OP的情况下,我可能会稍微修改一下,只重命名*.txt文件,如下所示:
find . -xtype f -iname *.txt -exec filename="{}" mv -iv ${filename%.*}.{txt,html} \;
分解(锤击时间!):
- iname * . txt -表示只考虑已经以.txt结尾的文件
Mv -iv "{}.{txt,html}" -当find传递一个{}作为文件名时,${filename%。*}提取它的basename,没有任何扩展,以形成mv的参数。Bash将{txt,html}重写为两个参数,因此最后的命令运行为:mv -iv "filename.txt" "filename.html"
修复需要:处理文件名中的空格
试试这个
rename .html .txt *.html
用法:
rename [find] [replace_with] [criteria]
对于Ubuntu用户:
rename 's/\.html$/\.txt/' *.html
这是我发现的在OSX和Linux上工作的最灵活的解决方案,它也可以很好地与git一起工作!
找到。-name "*.js" -exec bash -c 'mv "$1" "${1%.js}"Tsx ' - '{}' \;
对于git:
找到。-name“* . js - c“git bash -exec mv“1美元${1%。js的”。tsx“-”{}“\”