rename 's/(PMC|\.pdf)//g' *pdf.txt
Run Code Online (Sandbox Code Playgroud)
演示:
$ ls *txt
PMC21375.pdf.txt
$ rename -n 's/(PMC|\.pdf)//g' *txt
PMC21375.pdf.txt -> 21375.txt
Run Code Online (Sandbox Code Playgroud)
从shell
提示。它非常有用,您可以像我一样在替换中放置一些perl代码。当您的测试有效时,
您可以移除-n
(试运行模式开关)。
还有其他同名的工具可能会也可能不会这样做,所以要小心。
如果您运行以下命令 ( linux
)
$ file $(readlink -f $(type -p rename))
Run Code Online (Sandbox Code Playgroud)
你有这样的结果
.../rename: Perl script, ASCII text executable
Run Code Online (Sandbox Code Playgroud)
那么这似乎是正确的工具 =)
如果没有,将其设为默认值(通常已经是这种情况)Debian
和衍生工具,例如Ubuntu
:
$ sudo update-alternatives --set rename /path/to/rename
Run Code Online (Sandbox Code Playgroud)
(替换/path/to/rename
为您的perl's rename
命令路径。
最后但并非最不重要的一点是,这个工具最初是由 Perl 的父亲 Larry Wall 编写的。
除了重命名命令,您还可以直接在 bash 中执行此操作(只是众多方法中的一种):
for file in *pdf.txt; do mv $file ${file//[A-Z.]}.txt ; done
Run Code Online (Sandbox Code Playgroud)
编辑以显示 Pinyaka 它是如何工作的:
hmontoliu@ulises2:/tmp/foo$ touch PCM21375.pdf.txt PCM21376.pdf.txt
hmontoliu@ulises2:/tmp/foo$ ls
PCM21375.pdf.txt PCM21376.pdf.txt
hmontoliu@ulises2:/tmp/foo$ for file in *pdf.txt; do mv $file ${file//[A-Z.]}.txt ; done
hmontoliu@ulises2:/tmp/foo$ ls
21375.txt 21376.txt
Run Code Online (Sandbox Code Playgroud)
有多种用于重命名文件的实用程序,但最容易使用的一种是rename
. 在您的情况下,您可能可以这样做:
rename PMC '' *txt
rename .pdf '' *txt
Run Code Online (Sandbox Code Playgroud)
第一个参数是要替换的文件名部分。第二个参数是替换字符串。这里我用''
来表示空字符串。以下所有参数都是要重命名的文件,这里我用来*txt
限制替换为文本文件。
rename
如果您正在运行 Linux,则应该已经存在。如果您运行的是 *BSD 或 OS X,您可能必须先安装它。