Copiando arquivos recursivamente

1

Como posso copiar arquivos * .txt apenas de um diretório e de todos os diretórios filhos?

Digamos que eu tenha uma pasta A contendo arquivos .txt e subpastas B C etc que contenham arquivos .txt e assim por diante e eu só quero todos os arquivos .txt?

    
por bigTree 07.03.2014 / 12:49

3 respostas

1

Isto irá encontrar todos os arquivos .txt começando na pasta atual (.) e scp-los um de cada vez para hostname e colocá-los na pasta home.

for filename in $( find . -name '*.txt' ); do scp "$filename" hostname:~/ ; done

Edit: É importante notar que você quer as aspas em torno do nome do arquivo, caso o nome do arquivo tenha um espaço, se o fizer e você não o citar, o aplicativo tratará como vários argumentos em vez de um.

    
por Joshua Briefman 07.03.2014 / 13:21
1

Experimente este comando:

 cd /Parent directory
    find . -name '*.txt' | cpio -pdm /pathtowhereyouwanttocopy

Este código apenas copia arquivos .txt e os salva em um diretório com suas pastas pai.

cpio copies files into an archive. It reads a list of filenames

find searches the directory tree rooted at each given file name

-pdm for overwrite destination content
    
por nux 07.03.2014 / 12:51
0

Eu pessoalmente usaria rsync para essa finalidade. Você pode facilmente filtrar arquivos por sua extensão. Ele também fornece detalhes abrangentes sobre como a transferência está progredindo.

rsync -vr --stats --progress --include="*/" --include "*.txt" --exclude='*' SOURCE DEST

Você mencionou que, enquanto estiver em sua própria máquina X , deseja obter todos os arquivos que estão na máquina Y . Nesse caso, você deve fazer isso:

scp username@Y:/path/to/directory/on/remote/machine /path/to/destination/on/X/local/machine

Agora vamos juntar tudo:

rsync -vr --stats --progress --include="*/" --include "*.txt" --exclude='*' username@Y:/path/to/directory/on/remote/machine /path/to/destination/on/X/local/machine

Você pode tentar executar um teste sem realmente copiar nada adicionando --dry-run ao seu comando rsync . Isso simulará o processo de cópia.

    
por benett 22.02.2018 / 13:42