尝试递归查找某些文件并更改文件名

尝试递归查找某些文件并更改文件名

我尝试在所有子文件夹中递归搜索文件名中带有点的文件并删除这些点(最后一个除外)

rename 命令可以单独运行,find 命令也可以,但是它们不能一起工作:

find ./ -type f -execdir rename -n 's/\.(?=[^.]*\.)//g' *.txt \;

答案1

命令中的 glob-execdir不起作用,最好find搜索你想要的文件并rename仅对它们运行:

find ./ -type f -name "*.txt" -exec rename -n 's/\.(?=[^.]*\.)//g' {} \;

事实证明您的rename表达式不适用于路径,请尝试以下方法:

find ./ -type f -name "*.txt" -exec rename -n 's:\.(?=[^./]*\.)::g' {} \;

相关内容