0
#!/bin/bash
if [[ "$#" -lt 3 ]]; then
echo "USAGE: enter the following arguments:
1st argument = starting directory path (e.g. . for working directory)
2nd argument = old file extension (e.g. txt)
3rd argument = new file extension (e.g. html
Note: Do not enter any . or \. for the 2nd and 3rd arguments
"
else
find "$1" -name *."$2"* -exec rename 's/\."${2}"$/."${3}"/' '{}' \;
fi
示例输入:bash脚本重命名文件的扩展名
bash rename_file_extensions.sh . txt html
输出示例:
Use of uninitialized value $2 in regexp compilation at (eval 6) line 1.
line 1
包含上述if statement
。参数$2
是txt
。所以,我对它指的是什么感到困惑。
我可以运行下面的线,它完美的作品,但我想拥有它接受bash的论点:
find . -name "*.txt.html*" -exec rename 's/\.txt.html.html.html$/.html/' '{}' \;
在这种情况下,你可以看到,有很多不正确的文件扩展名。这条线纠正了所有这些。
我试图编辑find
行:
find "${1}" -name '*."$2"*' -exec rename 's/\."${2}"$/."${3}"/' '{}' \;
这让我向前没有错误;然而,没有输出,并且当我运行以下命令bash rename_file_extensions.sh . txt html
时,并没有将txt
扩展名更改为html
。
请帮忙!
谢谢!
我使用'find'$ 1“-name”*。$ 2 *“-exec rename's/\'。”$ {2}“'$ /。'”$ {3}“'/''{}' \;'而且效果很棒!谢谢! – Debug255