MV
这是一个基本的命令行,旨在做一件事情并且做得很好(Unix理念):移动文件或目录。
您可以hack STDOUT
&STDIN
¹即时修改目标字符串,但这并不是明智的选择
重命名(Perl的)
还有其他相同名称的工具可能无法执行此操作,因此请小心。
当人们谈论时rename
,我们会想到的是这一点,而不是ELF
力量较弱的那一层(魔术?)。
这不是基础,而是Perl。您可以在内部传递一些Perl的功能,它的功能非常强大。
考虑这个例子:
您想重命名一堆文件,例如
foobar_1.txt
foobar_2.txt
foobar_3.txt
您可以这样在数字前加零sprintf()
(使用正则表达式,呵呵,它是Perl:D):
rename 's/(\d+)/sprintf("%04d", $1)/e' foobar_*.txt
现在您有了:
foobar_0001.txt
foobar_0002.txt
foobar_0003.txt
不是真正的基本命令,不是吗?
重命名并不是真正用于移动目录的,但是它可以做到:
$ mkdir -p /tmp/foo/bar/base
$ touch /tmp/foo/bar/base/file
$ rename 's!/tmp/foo/bar/base/file!/tmp/file!' /tmp/foo/bar/base/file
移动的文件
/tmp/file
¹我们在*.stackexchange.*
网站上看到的一些代码
for FILE in `ls *.txt`
do
mv ${FILE} `echo ${FILE} | sed 's/anything_ugly/anything_still_ugly/'`
done
这不是要走的路,它是普通的越野车,只是为了解释为什么在正确的时间使用正确的工具
type -a rename
和的输出是rename --version
什么?