我有一个包含 .MP3 文件的目录,我想将其扩展名更改为 .mp3。什么是最简单的方法来做到这一点?我在想一些事情:
find /RootPath -type f -iname "*.mp3" -exec mv {} sed s/.*MP3/\1.mp3/ \;
Run Code Online (Sandbox Code Playgroud)
……虽然我知道这不太对。:) 替换不正确,我不确定如何在 in 中使用 amv
和sed
命令。-exec
find
我需要一个 bash 脚本吗?
Ste*_*n D 12
这是在 Bash 中执行此操作的一种方法:
for i in *; do [ "${i/%MP3/mp3}" != "$i" ] && echo "$i" "${i/%MP3/mp3}"; done
Run Code Online (Sandbox Code Playgroud)
我在echo
这里使用过,所以命令本身除了打印文件名对之外什么都不做。如果该列表代表您要进行的更改,那么您可以更改echo
为类似的内容mv -i --
,然后将移动您的文件(并在覆盖之前提示您)。
在for
通过每一个文件迭代匹配的*
。然后,我们确定扩展名是否已经是小写的,如果是我们继续,如果不是,我们继续移动它(或回应它,视情况而定)。这使用 Bash 的内置字符串操作,您可以在这里阅读:http : //tldp.org/LDP/abs/html/string-manipulation.html
在 zsh 中:
autoload zmv
zmv '(*).MP3' '$1.mp3' # rename files in the current directory only
zmv '(**/)(*).MP3' '$1$2.mp3' # rename files in subdirectories as well
Run Code Online (Sandbox Code Playgroud)
还要照顾.Mp3
或.mP3
文件:
zmv '(**/)(*).(#i)mp3' '$1$2.mp3'
Run Code Online (Sandbox Code Playgroud)
您可以使用rename命令(请注意有两个具有不同 API 的主要实现)。例如要将文件扩展名的大小写从上更改为下,请尝试以下操作:
使用rename
from util-linux
(有时称为rename.ul
),假设.JPG
在文件名中只出现一次
rename -- .JPG .jpg *.JPG
Run Code Online (Sandbox Code Playgroud)与rename
from perl
(有时称为prename
;已发布了几个变体):
rename 's/\.JPG$/.jpg/' ./*.JPG
Run Code Online (Sandbox Code Playgroud)这里有一些关于他如何从一个凌乱的 bash 脚本转移到这个简单的命令的教程,这些命令正是您的用例。
执行此操作的另一个奇特命令是pax
. 如果您在 shell 中使用 ZSH,您也可以使用zmv
.
归档时间: |
|
查看次数: |
3445 次 |
最近记录: |