Na linha de comando do Linux, eu gostaria de copiar um conjunto (muito grande) de .txt
arquivos de um diretório (e seus subdiretórios) para outro.
Preciso que a estrutura de diretórios permaneça intacta e ignore os arquivos, exceto os que terminam em .txt
.
Respostas:
Você pode usar o find e o cpio para fazer isso
fonte
fonte
.
depoisfind
. Também no macOS 10.13.1, isso funcionou:find . -type f -name "*.txt" -exec install -v {} /dest/path/{} \;
Outra abordagem
find . -name '*.txt' -exec rsync -R {} path/to/dext \;
fonte
find . -iname '*.txt' -exec rsync -Rptgon {} path/to/dext \;
fazer uma correspondência sem distinção entre maiúsculas e minúsculas e preservar a propriedade e as permissões.A maneira mais fácil que funcionou para mim:
Um problema é que você precisa navegar para o diretório "desejado" antes para que o "caminho pai" esteja correto.
Verifique também se você ativou globs recursivos no bash:
fonte
Que tal você primeiro copiá-lo com
então vá para a nova pasta e execute
ou apenas
Edit: ok, você quer um comando que filtre (eu não testei isso porque meu sistema não possui o
cpio
comando!). Aqui é onde eu o encontrei: http://www.gnu.org/software/findutils/manual/html_mono/find.html#Copying-A-Subset-of-FilesPor favor testar este primeiro, porque eu não tentei ainda. Se alguém verificar, isso seria ótimo.
fonte
0
in-pmd0
e adicionar-print0
ao final dofind
comando (imediatamente antes do|
).Eu estava tentando fazer a mesma coisa no macOS, mas nenhuma das opções realmente funcionou para mim. Até eu descobrir
ditto
.Eu tive que copiar muitos arquivos .wav e pular arquivos de vídeo ... Então, aqui está o que eu vim com:
find . -type f -iname "*.wav" -ls -exec ditto {} /destination/folder/{} \;
find .
- Executa a busca na pasta atual. certifique-se decd /source/folder
antes de começar-type f
- Especifica procurar apenas arquivos-iname "*.wav"
- Isso diz para procurar maiúsculas e minúsculas * .wav-ls
- Isso mostra o arquivo em que ele está trabalhando. Caso contrário, não mostra nada.-exec ditto {} /destination/folder/{} \;
- Faz todo o trabalho de copiar e criar os arquivos com a mesma árvore de diretórios.fonte
Navegue para o diretório:
É um pouco mais direto e poderoso, se você gerenciar expressões regulares.
fonte
Navegue para o diretório:
Você precisará navegar para cada pasta do diretório, mas isso é melhor do que a maioria das opções que eu vi até agora.
fonte