whi*_*ngs 10 shell-script rename files
从目录中的所有文件或选定文件中删除空格、连字符和下划线的好命令是什么?
我在 Thunar 自定义操作中使用以下命令来对文件名进行 slugify:
for file in %N; do mv "$file" "$(echo "$file" | tr -s ' ' | tr ' A-Z' '-a-z' | tr -s '-' | tr -c '[:alnum:][:cntrl:].' '-')"; done
Run Code Online (Sandbox Code Playgroud)
但该命令仅用破折号/连字符和小写字母替换空格。
我在终端中使用以下命令从文件夹中的数千个文件名中删除空格,并且运行速度非常快:
rename "s/ //g" *
Run Code Online (Sandbox Code Playgroud)
同样,它只删除空格,不删除连字符/破折号和下划线。
理想情况下,我的文件名中不需要任何空格、连字符/破折号和下划线。如果该命令可以与所选文件的 Thunar 自定义操作一起使用,那就太好了。
Joh*_*024 11
软件包rename
附带的版本perl
支持正则表达式:
rename "s/[-_ ]//g" *
Run Code Online (Sandbox Code Playgroud)
或者,
rename -i "s/[-_ ]//g" *
Run Code Online (Sandbox Code Playgroud)
该-i
标志将rename
使用交互模式,提示目标是否已存在,而不是静默覆盖。
Perl 的重命名有时称为prename
.
在类似 Debian 的系统上,perl 的重命名似乎是默认的,上面的命令应该可以正常工作。
在某些发行版中,rename
util-linux 中的实用程序是默认的。此实用程序与 Perl 的rename
.
全部:首先,检查 Perl 的rename
名称是否可用prename
。
Debian: Perl 的重命名应该是默认的。它也可以作为prename
. 该rename
可执行文件,不过,是的控制之下/etc/alternatives
,因此可以被改变为不同的东西。
archlinux:运行pacman -S perl-rename
,命令可以作为perl-rename
. 要获得更方便的名称,请创建别名。(帽子提示:ChiseledAbs)
Mac OSX根据此答案,rename
可以通过以下方式使用自制软件安装在 OSX 上:
brew install rename
Run Code Online (Sandbox Code Playgroud)直接下载: rename
也可以从 Perl Monks 获得:
wget 'http://www.perlmonks.org/?displaytype=displaycode;node_id=303814' -O rename
Run Code Online (Sandbox Code Playgroud)我会用替换tr
命令替换所有这些命令sed
,例如:
for file in %N; do
mv "$file" "$(echo "$file" | sed 's/[ _-]//g')"
done
Run Code Online (Sandbox Code Playgroud)