用bash添加文件扩展名到文件

用bash添加文件扩展名“.jpg”到扩展名较less的文件的好方法是什么?

 for f in *.jpg; do mv "$f" "${f%.jpg}"; done for f in *; do mv "$f" "$f.jpg"; done 

你可以使用重命名:

 rename 's/(.*)/$1.jpg/' * 

另一种方式 – 没有循环

 find . -type f -not -name "*.*" -print0 |\ xargs -0 file |\ grep 'JPEG image data' |\ sed 's/:.*//' |\ xargs -I % echo mv % %.jpg 

分解:

  • find所有文件没有扩展名
  • 检查文件types
  • 只滤出JPG文件
  • 删除文件types信息
  • xargs为每个文件运行“mv”

上面的命令是干运行的 ,之后你应该删除mv之前的“echo”

简单的,cd到您的文件所在的目录,并:

 for f in *;do mv $f $f.jpg;done 
 find . | while read FILE; do if [ $(file --mime-type -b "$FILE") == "image/jpeg" ]; then mv "$FILE" "$FILE".jpg; fi; done; 

空转:

  rename -ns/$/.jpg/ * 

实际重命名:

  rename s/$/.jpg/ * 
 rename --dry-run * -a ".jpg" # test * -a ".jpg" # rename 

Ryan Li

将文件扩展名添加到没有文件扩展名的目录中的多个文件的正确语法是

 find . | while read FILE; do if [[ -n `file --mime-type "$FILE" | grep 'message/rfc822'` ]]; then mv "$FILE" "$FILE".eml; fi; done;