Suponha que você tem um monte de .docx
, .mp3
, .txt
e .xlsx
arquivos armazenados nesta estrutura de diretórios:
/files/
/files/dir1/
/files/dir1/dir11/
/files/dir1/dir12/
/files/dir1/dir13/
/files/dir2/
/files/dir3/
/files/dir3/dir31/
/files/dir3/dir32/
/files/dir4/
/files/dir5/
/files/dir51/
/files/dir52/
/files/dir53/
/files/dir54/
... e você deseja recursar em todos esses diretórios para copiar todos os .mp3
arquivos encontrados, /home/me/music/
mas não deseja preservar essa árvore de diretórios no destino (ou seja, deseja que todos os .mp3
arquivos encontrados sejam copiados para em /home/me/music/
vez de copiados para os respectivos diretórios como /home/me/music/dir1/
, /home/me/music/dir1/dir11/
etc.).
Nesse caso, no terminal do shell (bash), execute primeiro este comando para acessar a raiz da sua pesquisa de arquivos:
cd /files
... e, em seguida, execute este comando:
for i in `find . -iname '*.mp3'`; do cp $i /home/me/music/; done
No caso de você não quiser preservar árvore de diretórios do fonte no destino, execute este comando em vez (após a execução cd /files
):
find . -iname '*.mp3' | cpio -pdm /home/me/music/
Nos comandos acima, a pesquisa não diferencia maiúsculas de minúsculas (por exemplo .mp3
, correspondências .MP3
, .mP3
e .Mp3
). Use em -name
vez de -iname
se desejar que a pesquisa faça distinção entre maiúsculas e minúsculas (por exemplo, usar -name
para a .mp3
sequência de caracteres corresponderá aos arquivos que terminam com, .mp3
mas não àqueles que terminam com .MP3
, .mP3
nem .Mp3
).
-iname
vez de-name
no caso de algum arquivo terminar.MP3
.