例如,我有 100 个文件,它们的名称都有空格。其中之一是“ The Monkey King Return (2015).mkv
”。
如何删除名称中的所有空格并替换为点字符,同时删除“(”和“)”?
结果应该是“ The.Monkey.King.Return.2015.mkv
”。
我怎样才能批量执行此操作?
我实际上是通过 ssh 在我的 Synology NAS 中运行 shell 脚本,这是一个 BusyBox Linux 发行版,安装了 bash 和 ash,没有 gcc。已经尝试了好几天了,无法正确弄清楚。
可用工具:mv / xargs / sed / awk /其他标准linux cmd。
另外,如何递归地重命名子文件夹呢?
编辑:刚刚使用https://synocommunity.com/的 Debian Chroot 安装了 apt-get 并将 cmd 重命名到我的 Synology nas 中,所以现在可以了。
为了让需要简单答案的人,命令是:
find . -iname \*\ \*.\*|rename 's/\ /\./g'
Run Code Online (Sandbox Code Playgroud)
大多数 Linux 发行版都包含util-linux,它为您提供了该rename
命令。您可以通过运行以下命令来执行您请求的操作:
rename ' ' _ *.mkv
rename '(20' 20 *.mkv
rename ').' . *.mkv
Run Code Online (Sandbox Code Playgroud)
您可以尝试这些选项,它非常灵活。如果你想递归地执行此操作,请rename
与 find 命令结合使用,如下所示:
find . -type f -name \*.mkv -exec rename ' ' _ {} \;
Run Code Online (Sandbox Code Playgroud)
这些在手册中都有解释;键入man find
或man rename
阅读它们。
请注意,某些发行版显然包含接受 perl 正则表达式的不同命令。如果你的也这样做,你将需要稍微不同的语法:
rename 's/\ /./g' *.mkv
rename 's/[\)\(]//g' *.mkv
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8298 次 |
最近记录: |