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
。