Wor*_*ess 26 linux bash perl rename file-rename
许多网站(包括各种SO文章)都谈到使用Perl表达式重命名文件来"重命名".
这将是完美的,但显然这不是我的重命名实用程序,并且这些文章似乎都没有理解有多个版本的"重命名",我似乎无法找到接受Perl表达式的版本的位置.
我正在运行Fedora 20.我当前的重命名命令来自util-linux包,显然我需要Perl版本,这更好.
SzG*_*SzG 17
我只能说Debian.这两个程序被调用
/usr/bin/rename.ul从util-linux包中(因此.ul后缀)/usr/bin/prename从perl包中实际rename命令通过该/etc/alternatives机制起作用
/usr/bin/rename 是一个符号链接 /etc/alternatives/rename/etc/alternatives/rename 是一个符号链接 /usr/bin/prename同样的问题一直困扰着Cygwin,这是一个Red Hat产品,所以应该更像Fedora.我星期一看看我公司的笔记本电脑.我记得Perl-rename曾经在那里工作过.可能在我安装之前util-linux.
如果你安装Perl-rename,/usr/local/bin它将优先rename于util-linux.安装到的联机帮助页也是如此/usr/local/share/man/man1/.
我刚刚在Github上创建了一个单独的Perl-rename包:https://github.com/subogero/rename
nel*_*aro 15
您可以使用cpan安装它,这是类似于pip for python的perl存储库.
这是一个使用cpan 的教程.
如果您尝试重命名它,它看起来像这样
重命名--help
调用:重命名为文件...
要安装perl重命名,您可以执行以下操作.您可能需要安装一些依赖项,通常只需按Enter即可
cpan
cpan 1 >安装文件::重命名
CPAN:Storable loaded ok(v2.20)
阅读'/root/.cpan/Metadata'
数据库生成于2015年9月30日星期三08:17:02 GMT
运行模块安装'File :: Rename'
....正在
运行Build install
安装/usr/local/share/man/man1/rename.1
安装/usr/local/share/perl5/File/Rename.pm
安装/ usr/local/share /man/man3/File::Rename.3pm
安装/ usr/local/bin/rename
写/usr/local/lib64/perl5/auto/File/Rename/.packlist
RMBARKER/File-Rename-0.20.tar.gz
./Build install - 好的
这就是你如何从cpan安装重命名.
接下来是让它在您的系统上运行.因为您可能安装了多个重命名.
which rename
/usr/bin/rename
Run Code Online (Sandbox Code Playgroud)
当你真的想要这个.
/usr/local/bin/rename --help
Usage:
rename [ -h|-m|-V ] [ -v ] [ -n ] [ -f ] [ -e|-E *perlexpr*]*|*perlexpr*
[ *files* ]
Options:
-v, -verbose
Verbose: print names of files successfully renamed.
-n, -nono
No action: print names of files to be renamed, but don't rename.
-f, -force
Over write: allow existing files to be over-written.
-h, -help
Help: print SYNOPSIS and OPTIONS.
-m, -man
Manual: print manual page.
-V, -version
Version: show version number.
-e Expression: code to act on files name.
May be repeated to build up code (like "perl -e"). If no -e, the
first argument is used as code.
-E Statement: code to act on files name, as -e but terminated by
';'.
Run Code Online (Sandbox Code Playgroud)
我只是把它放进去/usr/bin/但有一个略微不同的名字,以确保我没有打破任何现有的脚本/程序依赖旧的.
ln -s /usr/local/bin/rename /usr/bin/rename.pl
Run Code Online (Sandbox Code Playgroud)
在 RedHat 8.4 上(但可能适用于 Fedora)
sudo yum install perl-CPAN
sudo cpan
install module::Build
install File::Rename
Run Code Online (Sandbox Code Playgroud)
比你可以创建一个别名:
alias prename='/usr/local/bin/rename'
Run Code Online (Sandbox Code Playgroud)
一个例子:
touch pic.jpeg
prename 's/\.jpeg$/.jpg/' *.jpeg
Run Code Online (Sandbox Code Playgroud)
在这里,您创建一个扩展名为 .jpeg 的空文件。下一行重命名当前目录中所有具有 .jpeg 扩展名的文件:它从这些文件的 jpeg 扩展名中删除 e。(第一行是为了确保目录中至少有一个类似的文件。)
(在 Debian/Ubuntu 上,您可以安装该rename软件包,然后您将拥有rename与上面相同的命令prename。另请阅读 SzG 关于替代方案和符号链接的答案:它可能像我写的那么简单,也可能不像我写的那么简单。
或者,您需要安装 libpath-tiny-perl 软件包来安装 CPAN。)
| 归档时间: |
|
| 查看次数: |
13223 次 |
| 最近记录: |