如何在 Linux 中重命名屏幕截图

许多桌面 Linux 系统保存的屏幕截图名称类似于 Screenshot from 2020-11-29 18-57-51.png
。通常,您真正需要的是将文件重命名为更明显的名称,例如 webinar1.png
、webinar2.png
等。幸运的是,在 Linux 命令行上重命名一堆文件真的很容易。
Bash shell 非常通用,提供了不同的方法来评估值和扩展变量。一种巧妙的评估是算术评估。要执行此评估,请使用 $ ((
and ))
包装您的算术语句。
评估还可以包括变量扩展,如 $sum
解析为一个值。但为方便起见,$ ((
and ))
之间列出的任何 Bash 变量都会自动展开。例如,要将变量计数递增 1,您可以键入:
count=$(( count + 1 ))
这与键入相同:
count=$(( $count + 1 ))
算术展开支持与其他编程语言中相同的运算符,包括用于加法和减法的 +
和 -
,*
和 /
表示乘法和除法,%
表示余数。您还可以使用 ++
和 --
来递增和递减变量中的值。查看 Bash 的手册页,向下滚动到 ARITHMETIC EVALUATION,以获取支持的运算符及其优先级的完整列表。
要重命名我的所有屏幕截图,我需要编写以下单行 Bash 命令:
n=1; for f in Screenshot*.png; do mv -v "$f" webinar$n.png; n=$(( n + 1 )); done
但这有什么作用呢?
命令的第一部分 n=1
将变量 n
初始化为 1。
然后,我使用 for
循环对所有以 Screenshot
开头并以 .png
扩展名结尾的文件进行操作。这些通常是我在上次网络研讨会上截取的所有屏幕截图。如果我需要更精确,我可能会在该文件规范中包含日期,例如 Screenshot from 2020-11-29*.png
。反斜杠是文字转义,以保留文件名中的空格。
for 循环的每次迭代都会在 f 变量中存储一个文件名。所以 mv
命令 mv -v \$f\ webinar$n.png
将每个文件重命名为我喜欢的文件名,比如 webinar1.png
、webinar2.png
等。我需要在 $f
变量扩展周围加上引号,这样 Screenshot from YYYY-MM-DD hh-mm-ss.png
中的空格就不会在我的 中引起问题>mv
命令。如果您收到类似 mv: target webinar1.png is not a directory
的错误,您可能没有在 $f
周围加上引号。
最后,我增加了 n
变量中的值,以便为循环中的下一次迭代做好准备。算术展开 n=$ (( n + 1 ))
将 n
变量加 1。
