将所有“.pdf”文件重命名为“_0.pdf”

Jon*_*nas 11 command-line rename copy

我想将所有文件复制*.pdf*_0.pdf

我该怎么做?

sem*_*uba 16

一个简单的方法是使用mmv命令:

mmv '*.pdf' '#1_0.pdf'
Run Code Online (Sandbox Code Playgroud)

您可能需要先安装它(在 Universe 存储库中可用):

sudo apt-get install mmv
Run Code Online (Sandbox Code Playgroud)

  • 为您节省“apt-cache show mmv”:_mmv 是一个根据一组通配符模式移动/复制/附加/链接多个文件的程序。此多重操作是安全执行的,即不会因目标名称与现有文件名或其他目标名称发生冲突而意外删除文件。_ (4认同)

hee*_*ayl 10

rename( prename):

rename -n 's/\.pdf$/_0$&/' *.pdf
Run Code Online (Sandbox Code Playgroud)
  • \.pdf$匹配.pdf文件名的末尾
  • 在替换中,匹配由_0_0$&
  • 放弃-n实际行动

bash参数扩展:

for f in *.pdf; do pre="${f%.pdf}"; echo mv -- "$f" "${pre}_0.pdf"; done
Run Code Online (Sandbox Code Playgroud)
  • pre="${f%.pdf}"将之前的文件名部分保存.pdf为变量pre

  • while mv-ing_0.pdf附加到$pre${pre}_0.pdf

  • 放弃echo实际行动


例子:

% rename -n 's/\.pdf$/_0$&/' *.pdf
rename(egg.pdf, egg_0.pdf)
rename(spam.pdf, spam_0.pdf)

% for f in *.pdf; do pre="${f%.pdf}"; echo mv -- "$f" "${pre}_0.pdf"; done
mv -- egg.pdf egg_0.pdf
mv -- spam.pdf spam_0.pdf
Run Code Online (Sandbox Code Playgroud)