Как найти файл и скопировать его каталог?

Начиная с xenial (Ubuntu 16.04.3 LTS )версия wget 1.17.1 -1ubuntu1.3 отлично взаимодействует с этим FTP-сайтом, из коробки.

1
21.01.2020, 20:40
1 ответ

С-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вверху, в то время как средний вариант обходит изменение каталога, ссылаясь на .в исходном каталоге в конце путь вместо этого.

3
27.01.2020, 23:29

Теги

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