Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 将源目录的内容复制到具有相同名称但大小写不同的目标目录_Bash_Case Insensitive_Cp - Fatal编程技术网

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

Bash 将源目录的内容复制到具有相同名称但大小写不同的目标目录,bash,case-insensitive,cp,Bash,Case Insensitive,Cp,我试图将源目录复制到目标目录,但问题是目标目录的名称相同,但大小写不同 比如说, cp -rp /mydata/AbC.git/* /target/abC.git 为了进一步澄清,我在脚本中使用dir name作为变量: cp -rp /mydata/${dir_name}.git/* /target/${dir_name}.git 现在,如果源目录和目标目录分别是AbC和AbC,那么该命令将失败 我所能确定的是,源和目标的拼写是相同的,但情况不同,没有固定的模式。我在网上查过,但找不到这样

我试图将源目录复制到目标目录,但问题是目标目录的名称相同,但大小写不同

比如说,

cp -rp /mydata/AbC.git/* /target/abC.git
为了进一步澄清,我在脚本中使用dir name作为变量:

cp -rp /mydata/${dir_name}.git/* /target/${dir_name}.git
现在,如果源目录和目标目录分别是AbC和AbC,那么该命令将失败

我所能确定的是,源和目标的拼写是相同的,但情况不同,没有固定的模式。我在网上查过,但找不到这样的例子。一个链接建议使用
shopt-snoaseglob
,但这不起作用


非常感谢您的帮助。

您可以使用
-iname
选项
查找
来查找不区分大小写的名称

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

你的意思是,如果源目录有
FOO
,目标目录有
FOO
,你想让它做
cp src/FOO target/FOO
,而不是创建一个名为
target/FOO
的新文件?据我所知,没有内置的工具可以做到这一点。您需要编写一个循环,检查目标目录中是否有同名但大小写不同的文件,然后执行复制。否,src和目标目录都包含文件。但是,我想复制/覆盖目标目录中src dir的内容我只关心目标目录名,而不关心该目录中的内容。只要我能确认src和target dir具有相同的名称(不区分大小写),那么我就应该能够将src的内容复制到target dir中。在这种情况下,您编写的内容应该可以工作。谢谢a tone@Barmar!:)我现在更喜欢
find