在我的 Debian 系统(嗯,我的 LMDE 系统,但足够接近)上,我至少有 3 个不同的rename
程序:
/usr/local/bin/rename
:这是一个 Perl 脚本,由 Tom Christiansen 编写。奇怪的是,我似乎无法找到安装它的软件包:
$ dpkg -S /usr/local/bin/rename
dpkg-query: no path found matching pattern /usr/local/bin/rename
Run Code Online (Sandbox Code Playgroud)/usr/bin/prename
:另一个 perl 脚本,由 Robin Barker 编写,这是perl
包的一部分:
$ dpkg -S /usr/bin/prename
perl: /usr/bin/prename
Run Code Online (Sandbox Code Playgroud)/usr/bin/file-rename
:又一个 Perl 脚本,没有明确的作者信息,但提到了 Larry(大概是 Wall)和 Robin(大概是 Barker)。这个是由rename
包安装的,也被符号链接到/usr/bin/rename
:
$ dpkg -S /usr/bin/file-rename
rename: /usr/bin/file-rename
Run Code Online (Sandbox Code Playgroud)我也有rename.ul
fromutil-linux
但让我们暂时忽略那个。这 3 个 Perl 脚本有什么区别?他们似乎都有相同的手册页man rename
,man file-rename
并且man prename
都给了我相同的页面。
我可以自己查看脚本并尝试了解它们之间的差异,但这并非微不足道,我希望有人会知道每个脚本具有哪些其他特性没有的特性。解释为什么 Debian …
我有一个 38GB 的文件夹,里面有 800 个 MP4 视频。重新下载后,文件名没有空格,所有单词都连在一起,但还是TitleCase。
所以从TitleCase
我需要Title Case
。
批量重命名这些文件的最有效方法是什么?
我记得很久以前我的发行版中就包含了rename
或autorename
,但现在似乎没有了。
我有一堆包含空格的文件和目录(每个文件名中有几个),我正在尝试删除它们。我陷入了rename
不理解正则表达式的“愚蠢”之中。到目前为止我最终得到了类似的东西
find . -maxdepth 1 -type d -print0 | perl -pe 'print $_; s/\s+/_/g' | xargs -n 2 -0 mv
Run Code Online (Sandbox Code Playgroud)
尝试结合find
(目前我只想重命名第一级目录;我试图规避xargs
使用空格作为分隔符的问题-print0
)和 Perl 正则表达式的力量。
它正在朝着正确的方向发展(如果我最终改变,mv
我echo
会得到我想要的),但它并不能完全发挥作用。
任何通用建议将不胜感激!
我在 Linux 机器上有一组带有前缀的文件,比如“pre_”,我只想通过删除它来重命名所有这些文件。这是我编写的 perl 代码,它不会引发任何错误,但工作尚未完成。
#!/usr/bin/perl -w
my @files = `ls -1 | grep -i \"pre_.*\"`;
foreach $file ( @files )
{
my @names = split(/pre_/, $file);
my $var1 = $names[1];
'mv "$file" "$var1"';
}
Run Code Online (Sandbox Code Playgroud)