AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1513981
Accepted
Luca Panareo
Luca Panareo
Asked: 2024-05-14 17:36:27 +0800 CST2024-05-14 17:36:27 +0800 CST 2024-05-14 17:36:27 +0800 CST

Movimento recorrente de arquivos completos

  • 772

Gostaria de responder a uma questão que pode ter sido discutida anteriormente ou abordada indiretamente através de outras questões.

Estou precisando de uma solução para mover arquivos recorrentemente com uma extensão específica de uma pasta para outra. Porém, devido ao processo de extração automatizado, é fundamental que o script possa identificar e ignorar arquivos que não foram completamente extraídos.

Já desenvolvi um script preliminar e testei-o com o crontab. Agora, procuro aprimorá-lo incorporando as seguintes funcionalidades:

  • Especificando o tratamento de arquivos com uma extensão específica
  • Implementando um mecanismo para ignorar arquivos extraídos de forma incompleta

Melhor Lucas


Após a primeira resposta, fiz esse script. Os arquivos antes da extração são .rar (também dividido em .part), mas com esse script quase resolvi tudo

#!/bin/bash

# Source folder
source_folder="-----"

# Destination folder
destination_folder="-----"

# File extension to be moved file_extension="-----"

# Iteration through the files with the specified extension
for file in "$source_folder"/*"$file_extension"; do
    # Check if the file is open
    if ! lsof "$file" >/dev/null 2>&1; then
        # move the file
        mv "$file" "$destination_folder"
    fi
done
scripts
  • 1 1 respostas
  • 44 Views

1 respostas

  • Voted
  1. Best Answer
    Reinier Post
    2024-05-14T19:02:38+08:002024-05-14T19:02:38+08:00

    Você pode usar um utilitário como fuserou lsofpara descobrir se um processo está gravando no arquivo. Isso só é útil se os arquivos forem extraídos por um processo no mesmo host e se esse processo tiver continuamente o arquivo aberto para gravação.

    O que fazer se o processo de extração falhar ou for abortado (por exemplo, devido à reinicialização do sistema)? O que você deseja fazer com um arquivo extraído de forma incompleta que não está sendo extraído ativamente?

    Você consegue reconhecer o final de um arquivo completamente extraído? Se você puder, eu usaria isso como seu critério. Dependendo do formato do arquivo, eu usaria awkou perlpara pythondetectar o final do arquivo. (Se estiver em um formato estruturado, como JSON, você deseja usar uma biblioteca para analisá-lo; essas bibliotecas estão prontamente disponíveis para Perl e Python.)

    Depois de ter um script, digamos is-complete, que decide se um arquivo está completo ou não (retornando o código de saída 0 para sucesso e qualquer outro número para falha), você pode mover os arquivos em um único comando:

    find extraction-directory -type f -name '*.desiredext' -exec is-complete {} \; -exec mv -t final-directory/ {} \;
    
    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve