Ben*_*Ben 8 command-line rename
我意识到这可能是一个非常简单的问题,但我对命令行仍然很陌生,并且只掌握了基本命令。
我已经从我的大学下载了一些讲座演示文稿(大约 25 个左右),但是这样做时它们被命名为……
L2%20Development%20of%20immune%20system.pptx
L4%20Molecular%20Recognition.pdf
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,他们下载的是 URL 编码%20
而不是空格。
我的问题是如何批量重命名所有这些文件,以便%20
删除并替换为空格?
Run*_*ium 10
在 Debian 和衍生产品(包括 Ubuntu)上,您可以使用rename
,它将 Perl 表达式应用于每个文件名。
rename 's/%20/ /g' L*
| | | | |
| | | | +--- Files to match
| | | +------- globally
| | +--------- with space
| +------------ %20
+--------------- Substitute
Run Code Online (Sandbox Code Playgroud)
我会考虑使用下划线而不是空格——因为它通常会使 cli 世界中的生活更轻松。
推广到所有 URI 编码:
rename 'use URI::Escape; $_ = uri_unescape $_' *%*
Run Code Online (Sandbox Code Playgroud)
小智 7
您可以使用deurlname
from renameutils。
$ ls
L4%20Molecular%20Recognition.pdf
$ deurlname L4%20Molecular%20Recognition.pdf
$ ls
L4 Molecular Recognition.pdf
Run Code Online (Sandbox Code Playgroud)
我编写了一个脚本,允许您在编辑器中重命名文件。
您只需向脚本传递一个文件名,它就会打开您的编辑器,其中包含文件名。然后编辑文件名、写入并关闭编辑器。
$ ls
L4%20Molecular%20Recognition.pdf
$ viname L4%20Molecular%20Recognition.pdf
======================
L4%20Molecular%20Recognition.pdf?
======================
======================
L4-Molecular-Recognition.pdf?
======================
(pretend this is an editor)
$ ls
L4-Molecular-Recognition.pdf
Run Code Online (Sandbox Code Playgroud)
我还编写了一个脚本 ,可以自动重命名文件以符合我喜欢的命名方案。当我下载文件时,我做的第一件事就是在它们上面调用这个脚本。
$ ls
L4%20Molecular%20Recognition.pdf
$ nf L4%20Molecular%20Recognition.pdf
'L4%20Molecular%20Recognition.pdf' renamed to 'l4-molecular-recognition.pdf'
$ ls
L4-molecular-recognition.pdf
Run Code Online (Sandbox Code Playgroud)
小心那个脚本。它可以做一些相当戏剧性的重命名。nf -n
在重命名任何文件之前使用其试运行 ( ) 选项。