gpt4 book ai didi

linux - 重写一个脚本,让它接受选项参数来控制它的行为

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:57 25 4
gpt4 key购买 nike

我创建了一个脚本,它将具有不同扩展名的文件移动到它们指定的目录中。如果该目录不存在,它会创建另一个目录(文件所在的位置),并创建另一个目录,其余具有不同扩展名的文件将所在的位置。

我的第一个问题是,当我在终端上放置 -d 和完整路径时,它应该只移动媒体文件,-l 和完整路径来移动所有文本文件,然后 -x 将扩展名更改为大写,然后 -u 更改为小写。

有人可以帮我修改一下并告诉我如何解决这个问题吗?

#!/bin/bash
From="/home/elg19/lone/doc"
To="/home/elg19/mu"
WA="/home/elg19/du"
MA="/home/elg19/dq"
WQ="/home/elg19/d2"


# this function checks if the directory exits and creates one if it does not then moves all doc files

function mama(){
if [[ ! -d "$WA" ]]; then
mkdir -p "$WA"
fi
cd "$From"
for i in pdf txt doc; do
find . -type f -name "*.${i}" -exec mv "{}" "$WA" \;
done
}

# this function checks if the directory exits and creates one if it does not then moves all media files

function so(){
if [[ ! -d "$To" ]]; then
mkdir -p "$To"
fi
cd "$From"
for i in mp3 mp4 swf; do
find . -type f -name "*.${i}" -exec mv "{}" "$To" \;
done
}

# this function checks if the directory exits and creates one if it does not then moves all image files

function soa(){
if [[ ! -d "$MA" ]]; then
mkdir -p "$MA"
fi
cd "$From"
for i in jpg gif png; do
find . -type f -name "*.${i}" -exec mv "{}" "$MA" \;
done
}

# this function checks if the directory exits and creates one if it does not then moves all the remaining files

function soaq(){
if [[ ! -d "$WQ" ]]; then
mkdir -p "$WQ"
fi
cd "$From"
for i in *; do
find . -type f -name "*.${i}" -exec mv "{}" "$WQ" \;
done
}
mama
so
soa
soaq

最佳答案

我不知道建议的选项在您的母语中是否助记,但在英语中它们是反助记的。我会建议更像:

-m path    Move media files
-t path Move text files
-u Change extensions to upper-case
-l Change extensions to lower-case

像这样用于常规参数解析的命令是 getopts (复数 - 许多系统也有一个命令 getopt,单数,它们具有完全不同的特征)。

引用页面给出了如何使用它的示例:

The following example script parses and displays its arguments:

aflag=
bflag=
while getopts ab: name
do
case $name in
a) aflag=1;;
b) bflag=1
bval="$OPTARG";;
?) printf "Usage: %s: [-a] [-b value] args\n" $0
exit 2;;
esac
done
if [ ! -z "$aflag" ]; then
printf "Option -a specified\n"
fi
if [ ! -z "$bflag" ]; then
printf 'Option -b "%s" specified\n' "$bval"
fi
shift $(($OPTIND - 1))
printf "Remaining arguments are: %s\n" "$*"

-a 选项不带参数;选项 -b 需要一个参数。

关于linux - 重写一个脚本,让它接受选项参数来控制它的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8546574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com