//// решено ////
Я пытаюсь скопировать несколько файлов, разбросанных по структуре каталогов, в другой, где такие файлы уже существуют, но без разрешения на запись разрешено. Поэтому я использовал команду find с двумя опциями -exec (опция -ok здесь только для отладки), первая для команды chmod и вторая для команды cp с двумя ссылками на {}.
Я думаю, что проблема заключается в том, как присоединить корневой путь назначения к переменной {}. Я пробовал другие способы присоединиться к этим путям без выхода.
Я знаю, что могу сделать это с помощью других инструментов (sed, awk, perl, bash script, отправить результаты поиска в файл и обработать его на втором этапе, ...), но я подумал, что этот способ проще.
Знаете ли вы, существует ли какой-либо способ заставить его работать? Заранее спасибо.
$ cd ~/sourceBranch/
$ find . \( -name '*.h*' -o -name '*.c*' \) -a -ctime -1 -ok chmod -v u+w /tmp/destBranch/{} \; -ok cp -uv {} /tmp/destBranch/{} \;
Однако я получаю этот вывод (отображается только для первого найденного файла):
< chmod ... ./Node/Db/UtilCLib/src/Constants.cc > ? yes
mode of `/tmp/destBranch/' retained as 0755 (rwxr-xr-x) <--- wrong path
< cp ... ./Node/Db/UtilCLib/src/Constants.cc > ? y
`./Node/Db/UtilCLib/src/Constants.cc' -> `/tmp/destBranch/Constants.cc' <--- wrong path