Use find
para este trabalho
find / -mindepth 7 -maxdepth 7 -iname '*.txt' -exec echo cp {} /destination \;
Modifique o padrão *.txt
de acordo com as suas necessidades e remova echo
se gostar do que vê na tela.
Eu gostaria de realizar algum processamento em arquivos com 6 diretórios na minha árvore (por exemplo, cópia). Os nomes dos diretórios em cada nível de diretório são inteiramente irregulares (números e letras aleatórios) e, no último nível, existem 20 diretórios diferentes onde estão meus arquivos.
Um exemplo de um caso:
cp /000157/DZW123/AHG345/DFR987/000RE7/0025RTZ/file.xxx /destination/file.xxx
Mesmo caso com um último nível diferente (entre 19 outros):
cp /000157/DZW123/AHG345/DFR987/000RE7/1298FGT/file.xxx /destination/file.xxx
Mas completamente diferente para muitos outros casos:
cp /001154/CVS456/SAQ452/FRO921/000VG5/0032RRT/file.xxx /destination/file.xxx
Por causa dos diferentes casos, um loop não ajudaria. Parece melhor se houvesse uma solução que me permitisse ir diretamente 6 diretórios para baixo na árvore para cada ramo (independente da nomenclatura). Eu tentei o cd + n, mas isso não funciona.
Use find
para este trabalho
find / -mindepth 7 -maxdepth 7 -iname '*.txt' -exec echo cp {} /destination \;
Modifique o padrão *.txt
de acordo com as suas necessidades e remova echo
se gostar do que vê na tela.
Supondo que você tenha arquivos apenas no nível final de sua estrutura de diretórios, você pode usar o find
with xargs
para copiar os arquivos conforme abaixo.
find . -type f -mindepth 7 -maxdepth 7 -print0 | xargs -0 cp -t /some/destination/directory
Este funciona bem com espaços nos nomes de sub-diretórios e os espaços nos nomes dos arquivos também.
Tags directory