使用bash为文件添加文件扩展名

时间:2011-05-24 16:54:47

标签: linux bash

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

10 个答案:

答案 0 :(得分:97)

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

答案 1 :(得分:51)

您可以使用重命名:

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

答案 2 :(得分:23)

另一种方式 - 没有循环

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

故障:

  • 查找所有没有扩展名的文件
  • 检查文件类型
  • 仅过滤掉JPG文件
  • 删除文件类型信息
  • xargs为每个文件运行“mv”

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

答案 3 :(得分:17)

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

for f in *;do mv $f $f.jpg;done

答案 4 :(得分:10)

干运行:

 rename -n s/$/.jpg/ *

实际重命名:

 rename s/$/.jpg/ *

答案 5 :(得分:5)

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

答案 6 :(得分:1)

就我而言,我不知道文件类型,因此在 file <<的帮助下,我使用了 mv 命令/ strong>命令来检查并可能找到文件类型。此解决方案可能不适用于所有文件,因为 file 命令可能无法识别文件类型,但对我来说最有用。

for f in *; do ext=$(file $f | awk '{print $2;}'); mv -n "$f" "$f.$ext"; done

awk的使用是剥离实际上是扩展名的命令 file 返回的字符串的第二个单词。

答案 7 :(得分:0)

您可以使用move multiple files。我是这个项目的维护者。语法很简单。

mmf files*

它将打开所有文件名或$ vim默认的$ EDITOR,您可以在vim中使用Ctrl + v + G突出显示所有文件名的末尾,保存文件,然后退出,并保存所有文件被重命名

答案 8 :(得分:-1)

rename --dry-run * -a ".jpg" # test  
* -a ".jpg" # rename

答案 9 :(得分:-2)

Ryan Li

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

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