
Então eu estava dando uma olhada e tudo que descobri é como fazer isso somente se o diretório já estiver criado, que é este:
find source -name '*.z' -exec cp {} destination \;
Mas como posso criar um novo diretório para onde desejo enviar esses arquivos no mesmo comando? Isto é o que eu tentei, mas sem sucesso:
find source -name '*.z' -exec cp {} | mkdir newDirectory \;
Responder1
Uma opção é usar o install
comando em vez de cp
. Tem a opção de criar todos os diretórios principais.
find source -name '*.z' -exec install -D {} dest \;
Responder2
Vocênão é possível canalizar dadospara mkdir
aquele caminho. Você poderia fazer algo assim:
find source -name '*.z' -exec sh -c 'mkdir -p newDirectory && cp "$@" newDirectory' _ {} +
ou (assumindo nomes de arquivos que não contenham novas linhas)
find source -name '*.z' | while IFS= read -r foo; do
mkdir -p newDirectory;
cp "$foo" newDirectory;
done
ou se você deseja criar apenas um diretório, então o nome é sempre o mesmo:
mkdir newDirectory; find source -name '*.z' -exec cp {} newDirectory \;