有人可以创建一个短代码,使用命令行选项-r重命名子目录中的文件扩展名吗?
所以如果我在名为loc的文件夹中有一个文件a.txt。我输入这个“change -r txt doc”,该文件将成为loc子目录中的a.doc(如loc / a.doc中所示)。
我需要将其添加到我的代码中。我之所以要使用case语句,也是因为我将来会添加更多选项。
答案 0 :(得分:1)
如果我正确理解您的问题,您希望以递归方式更改文件扩展名。
脚本change.sh
:
# recursive rename: ./change.sh -r -f txt -t doc
# current directory only: ./change.sh -f txt -t doc
find_depth="-maxdepth 1" # defaults to current directory
while getopts "rf:t:" Option
do
case $Option in
f ) from=$OPTARG ;;
t ) to=$OPTARG ;;
r ) find_depth="" ;;
esac
done
shift $(($OPTIND - 1))
for file in $(find . $find_depth -name "*.$from")
do
mv $file "${file/.$from/.$to}"
done
根据您的评论进行编辑。
答案 1 :(得分:1)
要获得扩展程序并使用case/esac
extension=${filename##*.}
case "$extension" in
"doc" ) ... ;;
"txt" ) ... ;;
esac