使用 bash 为文件添加文件扩展名
- 2024-11-06 08:35:00
- admin 原创
- 33
问题描述:
使用 bash 为无扩展名的文件添加文件扩展名“.jpg”的好方法是什么?
解决方案 1:
# Strip .jpg from all filenames
for f in *.jpg; do mv "$f" "${f%.jpg}"; done
# Add .jpg to all filenames (even those with .jpg already)
for f in *; do mv "$f" "$f.jpg"; done
# Add .jpg to all filenames...unless they are already .jpg
for f in *; do case "$f" in *.jpg) echo skipped $f;; *) mv "$f" "$f".jpg; esac; done
# Add .jpg to all filenames...unless they already have a . extension
for f in *; do case "$f" in *.*) echo skipped $f;; *) mv "$f" "$f".jpg; esac; done
解决方案 2:
您可以使用重命名:
rename 's/(.*)/$1.jpg/' *
解决方案 3:
另一种方法 - 无循环
find . -type f -not -name "*.*" -print0 |\nxargs -0 file |\ngrep 'JPEG image data' |\nsed 's/:.*//' |\nxargs -I % echo mv % %.jpg
分解:
查找所有不带扩展名的文件
检查文件类型
仅过滤掉 JPG 文件
删除文件类型信息
xargs 对每个文件运行“mv”
上述命令用于试运行,之后您应该删除 mv 之前的“echo”
编辑
有些人建议这里需要“用引号括起路径参数;避免在带有空格的路径上分割参数”。
通常,这个建议是正确的,但在本例中并非如此。因为,此处的不是由 shell 扩展%
替换的,而是由内部(直接)替换的,因此即使文件名中有空格, 也会被正确替换。xargs
`%`
简单演示:
$ mkdir xargstest
$ cd xargstest
# create two files with spaces in names
$ touch 'a b' 'c d'
$ find . -type f -print
./c d
./a b
# notice, here are spaces in the above paths
#the actual xargs mv WITHOUT quotes
$ find . -type f -print | xargs -I % mv % %.ext
$ find . -type f -print
./a b.ext
./c d.ext
# the result is correct even in case with spaces in the filenames...
解决方案 4:
很简单,cd 到你的文件所在的目录,然后:
for f in *;do mv $f $f.jpg;done
解决方案 5:
试运行:
rename -n s/$/.jpg/ *
实际重命名:
rename s/$/.jpg/ *
解决方案 6:
find . | while read FILE; do if [ $(file --mime-type -b "$FILE") == "image/jpeg" ]; then mv "$FILE" "$FILE".jpg; fi; done;
解决方案 7:
就我而言,我不知道文件类型,因此我使用mv命令并借助file命令来检查并可能找到文件类型。此解决方案可能不适用于所有文件,因为file命令可能无法识别文件类型,但对我来说效果很好。
for f in *; do ext=$(file $f | awk '{print $2;}'); mv -n "$f" "$f.$ext"; done
awk 的用途是剥离命令文件返回的字符串中的第二个单词,该字符串实际上是扩展名。
解决方案 8:
rename --dry-run * -a ".jpg" # test
* -a ".jpg" # rename
解决方案 9:
您可以使用移动多个文件。我是这个项目的维护者。语法很简单。
mmf files*
它将打开包含所有文件名的 $EDITOR,或默认为 vim,您只需在 vim 中使用 Ctrl+v+G 突出显示所有文件名的末尾,保存文件,退出,然后所有文件都将被重命名
解决方案 10:
李瑞安
为目录中没有文件扩展名的多个文件添加文件扩展名的正确语法是
find . | while read FILE; do if [[ -n `file --mime-type "$FILE" | grep 'message/rfc822'` ]]; then mv "$FILE" "$FILE".eml; fi; done;
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD