使用bash将文件扩展名“.jpg”添加到无扩展名文件的好方法是什么?
答案 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
故障:
上面的命令用于干运行,之后你应该删除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)
将文件扩展名添加到目录中没有文件扩展名的多个文件的正确语法是
find . | while read FILE; do if [[ -n `file --mime-type "$FILE" | grep 'message/rfc822'` ]]; then mv "$FILE" "$FILE".eml; fi; done;