我有一个文件夹,里面装满了 .bak 文件和一些其他文件。我需要删除该文件夹中所有 .bak 文件的扩展名。如何创建一个接受文件夹名称的命令,然后删除该文件夹中所有 .bak 文件的扩展名?
谢谢。
最佳答案
要从 BASH 变量的末尾删除字符串,请使用 ${var%ending}
语法。它是 a number of string manipulations available to you in BASH 之一.
像这样使用它:
# Run in the same directory as the files
for FILENAME in *.bak; do mv "$FILENAME" "${FILENAME%.bak}"; done
作为单行代码效果很好,但您也可以将其包装为脚本以在任意目录中工作:
# If we're passed a parameter, cd into that directory. Otherwise, do nothing.
if [ -n "$1" ]; then
cd "$1"
fi
for FILENAME in *.bak; do mv "$FILENAME" "${FILENAME%.bak}"; done
请注意,虽然引用您的变量几乎总是一个好习惯,但如果您的任何文件名可能包含空格,for FILENAME in *.bak
仍然是危险的。阅读 David W. 的答案以获得更强大的解决方案,以及 this document寻找替代解决方案。
关于linux - 如何删除文件的扩展名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17843889/