我收到这个错误:
“find:路径必须先于表达式
用法:找[-H] [-L] [-P] [路径...] [表达式]“
对于这个代码,我制作了:
for subdir in `find ./$file/ -name "*.$@"`
do
new_ext=`echo $subdir | sed "s/\(.*\.\)$/\1$new/"`
mv $subfile $new_ext
done
我正在尝试使用上面的代码重命名当前和子目录中的文件扩展名,而无需输入旧的文件扩展名 .
任何帮助指出我做错了什么都会感激不尽 .
2 回答
这是我的尝试:
find命令的输出由while循环读取,一次一行,每行分配给变量$ old_file
$ {old_file%$ old_extension}构造删除扩展名,然后将新扩展名'new'附加到$ new_file
echo mv ...行将输出到屏幕进行可视化验证
一旦你对结果感到满意,你可以删除回声并再次运行脚本来真正造成伤害 . 请记住:请在删除回声之前检查结果 .
请注意,我已针对包含和不包含嵌入空格的文件测试了我的解决方案 .
"*.$@"
肯定不会做你想要的 . 构建命令in an array .