在 Bash 中重命名文件
借助 Bash 脚本,您可以自动执行您的任务。 文件重命名是各种系统的常见任务。
您可以手动重命名所有文件。 但是,如果您的文件名有序列,最好自动执行此任务。
这样,您可以轻松地以正确的顺序重命名目录中的所有文件。
在本文中,我们将介绍一种方法,通过它您可以轻松地重命名目录中的所有文件。 此外,我们将看到必要的示例和解释,以使主题更容易理解。
在 Bash 中使用 mv 命令重命名文件
Bash 脚本包含一个称为 mv 的内置命令。 mv 命令主要用于将目录和文件从一个位置移动到另一个位置。
它还可用于重命名文件和目录。 关于此命令的一个重要事项是,如果您不指定文件的新名称,文件名将在其新位置相同。
此命令的一般语法是 $ mv [OPTIONS] SOURCE DESTINATION
。 此命令的可用选项是:
- mv -f - 此标志将在没有提示的情况下通过覆盖目标文件来强制移动。
- mv -i - 此标志用于覆盖前的交互式提示。
- mv -u - 此标志用于更新。 这只会在文件是新源而不是目标时移动文件。
- mv -v - 此标志将打印源和目标的所有文件。
- man mv - 此标志将打开帮助手册。
假设我们有一个具有以下顺序的文件列表。
1_file.txt
2_file.txt
3_file.txt
4_file.txt
5_file.txt
6_file.txt
现在,看看下面的代码示例。
for file in *.txt
do
mv "$file" "${file/_file.txt/_Textfile.txt}"
done
在上面的示例中,我们将所有文件重命名为 .txt 类型。 为此,我们使用了带有命令 mv 的 for 循环。
现在用于此目的的一般语法是 mv "$LoopVar" "${LoopVar/PreviousName.txt/NewName.txt}"
。
这里你要注意,你需要在文件名中包含一个循环变量; 否则,它可能会导致覆盖,因为它是系统生成的名称。
现在当你运行上面的代码时,你会看到你的所有文件都被重命名为如下所示。
1_Textfile.txt
2_Textfile.txt
3_Textfile.txt
4_Textfile.txt
5_Textfile.txt
6_Textfile.txt
此命令的一个重要事项是指定文件名的公共部分以标识文件。 它可以是文件类型或文件名中的任何其他常见模式。
否则,该命令可能无法成功重命名所有文件。
在 Bash 中使用 rename 命令重命名文件
Bash 脚本中还有一个名为 rename 的第三方命令。 但是你需要在使用它之前安装它。
要在您的 shell 环境中安装此命令,您可以按照以下适用于 Ubuntu 和 Debian 的命令进行操作。
$ sudo apt install rename
之后,我们可以像下面这样重命名文件。
rename [Your Options] 's/[Current Filename]/[New Filename]/' [Filename]
此命令还包含一些选项,如下所示。
-
-a
- 此选项将替换除第一个文件之外的所有文件名。 -
-f
- 此选项将强制覆盖现有文件。 -
-h
- 此选项将显示帮助文本。 -
-i
- 此选项将在覆盖现有文件之前显示提示通知。 -
-l
- 此选项将替换最后出现的元素而不是第一个出现的元素。 -
-n
- 此选项执行空运行。 -
-s
- 此选项重命名目标而不是符号链接。 -
-v
- 此选项以详细版本显示输出。 -
-V
- 此选项显示命令版本。
我们可以使用以下命令重命名上述文件集。
rename -v 's/_Testfile/_Test/' *.txt
它将显示以下输出。
1_Testfile.txt renamed as 1_Test.txt
2_Testfile.txt renamed as 2_Test.txt
3_Testfile.txt renamed as 3_Test.txt
4_Testfile.txt renamed as 4_Test.txt
5_Testfile.txt renamed as 5_Test.txt
6_Testfile.txt renamed as 6_Test.txt
相关文章
在 Bash 中运行 find -exec 命令
发布时间:2024/03/14 浏览次数:127 分类:操作系统
-
本文将演示如何使用 find 命令的 -exec 参数来使用 find 命令定位文件中的任何文本。