Начиная с xenial (Ubuntu 16.04.3 LTS )версия wget 1.17.1 -1ubuntu1.3 отлично взаимодействует с этим FTP-сайтом, из коробки.
С-execdir
(не стандартным предикатом, но часто реализуемым ), данная утилита будет выполняться в каталоге, где был найден файл.
Это означает, что вы можете сделать
find /search -name file.txt -execdir cp -Rp. /destination \;
Без-execdir
:
find /search -name file.txt -exec sh -c 'cp -Rp "${1%/*}/." /destination' sh {} \;
или,
find /search -name file.txt -exec sh -c 'cd "${1%/*}" && cp -Rp. /destination' sh {} \;
Эти два последних варианта запускают сценарий -для каждого найденного файла. Сценарий принимает путь к файлу в качестве первого аргумента (в$1
)и удаляет имя файла из пути, используя${1%/*}
(стандартную подстановку параметров ). Затем он применяет ту же команду cp
, что и в первом варианте с -execdir
.
Код, выполняющий cd
, более точно эмулирует то, что на самом деле делает вариант -execdir
вверху, в то время как средний вариант обходит изменение каталога, ссылаясь на .
в исходном каталоге в конце путь вместо этого.