从 Linux 上的文件名中删除一个单词

从 Linux 上的文件名中删除一个单词

exiftool -all= *我在 Linux 系统的下载文件夹中意外运行了该命令(该命令会从当前目录中的所有文件中删除 EXIF 元数据)。幸运的是,exiftool通过添加扩展名创建了备份文件_original(因此untitled.jpg变成了untitled.jpg_original。我怎样才能从原始文件(我已将其移入文件夹)中删除此后缀,以便使原始文件保留其原始文件名?

答案1

如果它们都在同一级目录中,那么使用 bash 可以像这样简单:

$ for i in *.jpg_original; do mv -v "$i" "${i/.jpg_original/.jpg}"; done
renamed 'test.jpg_original' -> 'test.jpg'
$

答案2

改名

打开终端,将目录更改为包含名称末尾cd带有 的文件的目录,然后运行以下命令:_original

find . -type f -name '*_original' -print0 | xargs -0 rename 's/_original//' 

要查找_original文件名中带有后缀的文件,请运行上述命令的第一部分。

find . -type f -name '*_original'

find子目录中的文件也可以rename重命名,无论文件位于何处,因此在重命名之前不需要将文件移动到其他地方。

rename 's/_original//'_original从找到的文件名称中删除,并用零长度的空字符串find替换。_original

sed 和 mv

如果您的 Linux 发行版中的程序与用于测试此代码的程序(Larry Wall 的“Perl rename”,基于 Debian,基于 Red Hat 的发行版)rename不同,您可以使用而不是来重命名文件。renamerenameprenamemvrename

find . -type f -name '*_original' | sed -e 'p;s/_original//' | xargs -n2 mv  

find . -type f -name '*_original'查找所有具有_original后缀的文件并用零长度的空字符串sed -e 'p;s/_original//' | xargs -n2 mv替换。_original

相关内容