Как найти файлы и скопировать в не существующая папка в одной команде?

Например:

find /usr -type f -name "*.txt" -exec cp -r {} ~/txts/ \;

Хорошо работает в случае, если, когда у нас есть существующий каталог txts.

Насколько я могу понять - CP не имеет никаких флагов для разрешения этого случая. Возможно, я должен использовать rsync или что-то еще?

2
задан 2 September 2016 в 13:46

1 ответ

Хороший вопрос, Вы могли попробовать это:
Первый 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
2
ответ дан 2 December 2019 в 03:45

Другие вопросы по тегам:

Похожие вопросы: