我想从改变文件扩展名*.txt
来*.text
。我尝试使用该basename
命令,但在更改多个文件时遇到问题。
这是我的代码:
files=`ls -1 *.txt`
for x in $files
do
mv $x "`basename $files .txt`.text"
done
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
files=`ls -1 *.txt`
for x in $files
do
mv $x "`basename $files .txt`.text"
done
Run Code Online (Sandbox Code Playgroud) 我有一个充满图像的目录:
image0001.png
image0002.png
image0003.png
...
Run Code Online (Sandbox Code Playgroud)
我想要一个单线将它们重命名为(比如说)。
0001.png
0002.png
0003.png
...
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
在我的 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 …
在 CentOS 上,rename 命令使用两个简单的字符串,from
以及to
.
rename from to file...
Run Code Online (Sandbox Code Playgroud)
而在 Debian/Ubuntu 上,它使用 perl 风格的正则表达式。
rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
Run Code Online (Sandbox Code Playgroud)
为什么此实用程序因分布而异?是否有关于哪些发行版发布或默认使用该实用程序的哪些版本的参考?