将源目录的内容复制到名称相同但大小写不同的目标目录

Copy content of source dir to destination dir having same name but different case

我正在尝试将源目录复制到目标目录,但问题是目标目录具有相同的名称但大小写不同。

例如,

cp -rp /mydata/AbC.git/* /target/abC.git

为了进一步说明,我在脚本中使用目录名称作为变量:

cp -rp /mydata/${dir_name}.git/* /target/${dir_name}.git

现在如果源目录和目标目录分别是 AbC 和 abC,那么命令将失败。

我唯一确定的是源和目标的拼写相同,但大小写不同,没有固定模式。我在网上查过,但找不到这样的例子。一位 link 建议使用 shopt -s nocaseglob 但这行不通。

非常感谢任何帮助。

您可以使用 find-iname 选项来查找匹配 case-insensitively 的名称。

srcname=AbC.git
dest=$(find /target -maxdepth 1 -iname "$srcname")
cp -rp /mydata/"$srcname"/* "$dest"