Сfind
:
find. -type f -name '*.out' -exec grep -q 'PATTERN' {} ';' \
-exec sh -c 'cp "$1" "${1%.out}.gdx" /somewhere' sh {} ';'
В качестве альтернативы:
find. -type f -name '*.out' -exec grep -q 'PATTERN' {} ';' \
-exec sh -c 'for name do cp "$name" "${name%.out}.gdx" /somewhere; done' sh {} +
Это найдет все файлы в текущей папке или ниже, имена которых заканчиваются на .out
. Если файл .out
имеет строку, совпадающую с PATTERN
, файл .gdx
в том же каталоге с тем же префиксом имени, что и файл .out
, будет скопирован в /somewhere
вместе с файлом .out
..
Проверка того, существует ли уже запись каталога под /somewhere
с тем же именем, что и у копируемых файлов, или действительно ли изначально существует файл .gdx
, не выполняется.
См. также: