Se você deseja copiar todos os arquivos .txt
em um diretório, use um padrão curinga :
cp direct/direct1/*.txt target
Isso copia todos os arquivos .txt
que estão no diretório direct/direct1
para o diretório target
(que já deve existir).
Você pode passar vários padrões para copiar arquivos de vários diretórios:
cp direct/direct1/*.txt direct/direct2/*.txt target
Se você deseja copiar os arquivos .txt
de todos os subdiretórios de direct
, também pode usar um curinga para o diretório:
cp direct/*/*.txt target
Se você deseja copiar somente de determinados diretórios, é possível usar um padrão curinga que corresponda apenas a esses diretórios. Por exemplo, se direct
tiver quatro subdiretórios foo
, bar
, baz
e qux
e você só quiser copiar arquivos de bar
e baz
, poderá usar
cp direct/ba?/*.txt target
Nenhum dos exemplos até agora copiou arquivos de direct
, ou de subsubdirectories de direct
. Se você deseja copiar os arquivos .txt
de direct
, inclua-os na lista, por exemplo,
cp direct/*.txt direct/*/*.txt target
Se você deseja copiar arquivos de direct
, todos os seus subdiretórios, todos os seus subdiretórios, e assim por diante de forma recursiva, você pode usar o curinga **
, se o seu shell suportar. Funciona fora da caixa em zsh, mas em bash , você precisa habilite-o primeiro com shopt -s globstar
.
cp direct/**/*.txt target
Note que todos os arquivos são copiados em target
, isto não reproduz a estrutura do diretório. Se você quiser reproduzir a estrutura de diretório, você precisa de uma ferramenta diferente, como rsync (tutorial ) ou pax .
rsync -am --include='*.txt' --include='*/' --exclude='*' direct/ target/
cd direct && pax -rw -pe -s'/\.txt$/&/' -s'/.*//' . target/