Например:
find /usr -type f -name "*.txt" -exec cp -r {} ~/txts/ \;
Хорошо работает в случае, если, когда у нас есть существующий каталог txts.
Насколько я могу понять - CP не имеет никаких флагов для разрешения этого случая. Возможно, я должен использовать rsync или что-то еще?
Хороший вопрос, Вы могли попробовать это:
Первый cd
в /usr
, это вызвано тем, что, когда Вы используете полный путь (как /usr
) с find
, я подозреваю, что он заставит {}
содержать полные пути.
find . -type f -a -name "*.txt" -a -exec install -D {} ~/texts/{} \;
, Когда я выполняю эту команду, я получил следующее сообщение об ошибке:
найдите: †./share/doc/google-chrome-stable’: Разрешение отклонило
, сообщение об ошибке не означает отказавшую операцию в целом, это просто означает find
, не смог выполнить команду на ./share/doc/google-chrome-stable
каталог.
, Но для меня все другие файлы и их пути были скопированы, и пути к каталогам были созданы по мере необходимости.
после дальнейшего расследования, причина ошибки была
% ls -al --directory ./share/doc/google-chrome-stable
drwx------ 2 root root 4096 Aug 21 12:45 ./share/doc/google-chrome-stable