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