2016-01-07 9 views
1

Я пытаюсь скопировать исходный каталог в каталог назначения, но проблема заключается в том, что адресный каталог назначения имеет одно и то же имя, но в другом случае.Копировать содержимое исходного каталога в каталог назначения с таким же именем, но в другом случае

Например,

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

Для дальнейшего уточнения, я использую реж имя в качестве переменной в скрипте:

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

Теперь, если источник реж и целевой реж являются AbC и Abc соответственно, то команда завершится неудачно.

Все, что я уверен в том, что правописание одинаково для источника и назначения, но случаи разные, без фиксированного шаблона. Я проверил онлайн, но не смог найти такой пример. Одна ссылка предложила использовать shopt -s nocaseglob, но это не работает.

Любая помощь будет действительно оценена.

+0

Вы имеете в виду, если исходный каталог имеет 'Foo' и целевой каталог имеет' Foo', вы хотите, чтобы это сделать 'целевой ф ЦСИ/FOO/Foo' вместо создания нового файла с именем' целевой/FOO '? – Barmar

+0

Нет ничего встроенного, которое делает это, насколько я знаю. Вам нужно написать цикл, который проверяет, есть ли файл с тем же именем, но другой случай в целевом каталоге, а затем выполнить копию. – Barmar

+0

Нет, оба файла src и target dirs содержат файлы. Тем не менее, я хочу скопировать/перезаписать содержимое файла src в target dir – Technext

ответ

1

Вы можете использовать опцию -iname для find, чтобы найти имя, которое не учитывает регистр-регистр.

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

Спасибо тонну @Barmar! :) Я люблю «находить» еще больше. – Technext