LinuxBash脚本-将参数中的小写路径与实际文件系统路径匹配
我有一个linux脚本,它得到一个来自MSDOS的参数(实际上是运行MS DOS 6.22的DOSEMU)。传递的参数不区分大小写(DOS不区分大小写),但Linux当然不区分大小写 我试图从下面通过的论点中得出结论LinuxBash脚本-将参数中的小写路径与实际文件系统路径匹配,linux,bash,sh,case-sensitive,Linux,Bash,Sh,Case Sensitive,我有一个linux脚本,它得到一个来自MSDOS的参数(实际上是运行MS DOS 6.22的DOSEMU)。传递的参数不区分大小写(DOS不区分大小写),但Linux当然不区分大小写 我试图从下面通过的论点中得出结论 /media/zigg4/vol1/database/scan/stalbans/docprint/wp23452.wpd 到 我不知道实际的区分大小写的路径,所以我需要通过传递给脚本的参数来确定它。我完全不知道从哪里开始,所以非常感谢任何帮助 编辑以获得更多信息和清晰度 更新
/media/zigg4/vol1/database/scan/stalbans/docprint/wp23452.wpd
到
我不知道实际的区分大小写的路径,所以我需要通过传递给脚本的参数来确定它。我完全不知道从哪里开始,所以非常感谢任何帮助
编辑以获得更多信息和清晰度
更新
感谢@anubhava的回答,我使用了以下内容:-
#!/bin/bash
copies=1
if [ ! -z "$2" ]; then
copies=$2
fi
find / -readable -ipath $1 2>&1 | grep -v "Permission denied" | while IFS= read -r FILE; do
lpr -o Collate=True -#$copies -sP $FILE
done
很好用:-)类似这样的东西:
if [ "$( echo $real | tr A-Z a-z )" = "$lower" ]; then
echo "matchy"
else
echo "no is matchy"
fi
一些注意事项:
tr
正在进行较低的翻译$(…)
位将封闭命令的结果放入字符串中我会为此雇用
awk
(当然没有薪水)
按以下方式运行脚本:
./script "/media/zigg4/vol1/database/scan/stalbans/docprint/wp23452.wpd"
您可以使用
find
的-ipath
选项忽略案例路径匹配:
# assuming $arg contains path argument supplied
find . -ipath "*$arg*"
将两个路径转换为小写,然后compare@anubhava谢谢你的评论。也许我的问题不清楚。我不知道第二条路。这就是我根据传递给脚本的参数试图找到的,所以现在这个脚本将在linux或DOS下运行?linux-背景是我试图在DOS中实现网络打印:-)我创建了一个批处理文件,该文件以文件名作为参数。这个dos批处理文件执行了一些逻辑,并创建了一个Linux路径,该路径很好,但大小写不正确。我将这个变量传递到我的Linux脚本中,然后使用lpr打印到用户选择的网络打印机上。我不确定这是否是我所需要的。第一行暗示(对我来说)我知道两个变量$雷亚尔和美元更低。实际上我只知道传递给脚本的参数是多少。我想找的是真实的美元。嗨,山姆,谢谢你的回答。看来我原来的问题不清楚,所以我为浪费你的时间道歉。我不知道真正的路径,只知道它的一个不区分大小写的版本。这是我试图获得的区分大小写的版本。完美。Thank:-)@l0ckm4:值得注意的是find提供了一些不区分大小写的匹配选项,如iname、ipath、iregex等。gnu find手册页建议使用
-iwholename
而不是-ipath
./script "/media/zigg4/vol1/database/scan/stalbans/docprint/wp23452.wpd"
# assuming $arg contains path argument supplied
find . -ipath "*$arg*"