Скопируйте файл из исходного каталога в целевой базовый каталог и сохраните исходный путь.

Скопируйте файл из исходного каталога в целевой базовый каталог и сохраните исходный путь.

Извините, я, вероятно, использую неверные термины для описания проблемы и не понимаю самые основные принципы использования нескольких распространенных команд.

У меня есть простой оператор find, который находит файлы, которые я хочу скопировать. Я хочу добавить -exec cp {} и заставить cp скопировать файл из исходного каталога в новый базовый каталог, но включить полный путь. Например:

  • find . -name *.txtнаходит/user/username/projects/source.txt
  • cp {} [now what?]копирует файл в/user/newuser/projects/source.txt

решение1

rsync -rlpv --files-from=<(find ...) /user/username/projects /user/newuser

решение2

Если вы уверены, что все подкаталоги существуют, то это интересный вариант:

cd /user/username/
find . -name \*.gz | sed 's/\.\(.*\)/.\1 ..\/newuser\1/' | xargs -n2 cp

Связанный контент