查找:路径必须位于表达式之前



我收到此错误:

"查找:路径必须先于表达式

用法:查找 [-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 ...行将输出到屏幕进行视觉验证
  • 对结果感到满意后,您可以删除回声并再次运行脚本以真正造成损害。请记住:请在删除回声之前检查结果。
  • 请注意,我已经针对带有和不带有嵌入空格的文件测试了我的解决方案。

"*.$@"肯定不会做你想做的事。在数组中生成命令。

相关内容

  • 没有找到相关文章

最新更新