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 / user-247049

Apricot's questions

Martin Hope
Apricot
Asked: 2019-07-07 05:07:20 +0800 CST

Movendo milhões de arquivos para um diretório diferente com padrões de nomes específicos

  • 10

Tenho milhões de arquivos com a seguinte nomenclatura em uma máquina Linux:

1559704165_a1ac6f55fef555ee.jpg

Os primeiros 10 dígitos são timestamp e os seguidos por um _são ids específicos. Quero mover todos os arquivos que correspondem a IDs de nome de arquivo específicos para uma pasta diferente.

Eu tentei isso no diretório com arquivos

find . -maxdepth 1 -type f | ??????????_a1ac*.jpg |xargs mv -t "/home/ubuntu/ntest"

No entanto, estou recebendo um erro indicando:

bash 1559704165_a1ac6f55fef555ee.jpg: command not found

Quando tentei, mv ??????????_a1ac*.jpg estou recebendo um erro muito longo na lista de argumentos. Eu tenho pelo menos 15 padrões de nome de arquivo diferentes. Como faço para movê-los.

file-copy
  • 5 respostas
  • 2277 Views
Martin Hope
Apricot
Asked: 2019-06-12 04:13:10 +0800 CST

Processando arquivos em ordem específica

  • 0

Eu tenho 40k imagens em uma pasta. Os nomes dos arquivos seguem o seguinte padrão:

1558058263_18ea873ddcf8c65e.jpg
1558408930_63c29ce4462ec194.jpg 
1558062887_18ea873ddcf8c65e.jpg

Neste a primeira parte do nome do arquivo é o carimbo de hora e a segunda parte é o id da máquina que gerou a imagem.

Desejo processar cada um desses arquivos em uma ordem sequencial com base apenas no carimbo de data/hora. Como posso levar os arquivos sequencialmente para processamento. Estou usando python3 para selecionar os arquivos. O código atual é o seguinte:

 for root, dirs, files in os.walk(path):
                for name in files:
                        img=fr.load_image_file('/home/ubuntu/faces/' + name)
filenames python
  • 4 respostas
  • 1264 Views
Martin Hope
Apricot
Asked: 2019-04-30 20:56:49 +0800 CST

Copiando arquivos com base em nomes parciais em um arquivo

  • 0

Eu tenho milhões de arquivos xml em uma pasta. O nome dos arquivos segue um padrão específico:

ABC_20190101011030931_6049414.xml

Neste estou interessado apenas no último conjunto de dígitos antes de xml 6049414. Eu tenho uma lista de cerca de 8000 desses números em um arquivo de texto. Os detalhes no arquivo de texto são os seguintes - um número em uma linha:

104638
222885
108880071

Estou usando o seguinte código para mover os arquivos da pasta que corresponde ao número fornecido no arquivo de texto:

#folder where the xml files are stored  
cd /home/iris/filesToExtract  
SECONDS=0

#This line reads each number in the hdpvr.txt file and if a match is found moves that file to another folder called xmlfiles.  
nn=($(cat /home/iris/hdpvr.txt));for x in "${nn[@]}";do ls *.xml| grep "$x"| xargs -I '{}' cp {} /home/iris/xmlfiles;done  

#this line deletes all the other xml files from filesToExtract folder
find . -name "*.xml" -delete  
echo $SECONDS

Estou enfrentando dois problemas. 1 Alguns dos arquivos não estão sendo movidos apesar de haver uma correspondência e 2. Mesmo que a correspondência seja encontrada na parte do meio do nome do arquivo, por exemplo

from this ABC_20190101011030931_6049414.xml -> this 20190101011030931  

se uma correspondência for encontrada, ela ainda se move... como posso obter as correspondências exatas e mover os arquivos.

bash file-copy
  • 2 respostas
  • 2138 Views
Martin Hope
Apricot
Asked: 2018-06-27 22:21:50 +0800 CST

awk pesquisa e substitui string em uma coluna específica do arquivo CSV

  • 5

Eu tenho um arquivo csv com 17 colunas e milhões de linhas. Quero procurar uma string específica na 16ª coluna e substituir todas as instâncias dessa string por outra string. Como o resto do programa usa o script bash, pensei em usar o awk em vez do Python search & replace. Meu sistema operacional atual é Rhel6.

A seguir está a saída de amostra dos meus dados:

SUBSCRIBER_ID|ACCOUNT_CATEGORY|ACCOUNT_ACTIVATION_DATE|PACKAGE_NAME|PACKAGE_TYPE|DURATION|ACTIVE_DATE|INACTIVE_DATE|STB_NO|PRIMARY_SECONDARY|MODEL_TYPE|VC_NO|MULTIROOM|STB_TYPE|IPKG|SERVICE_STATE|CURRENT_STATUS
1001098068|ResidentialRegular|01/20/2007|Annual package 199 May17 pack|Basic Package|Annual|08/28/2017||027445053518|Primary|Pace - 31|000223871682|Yes|AMP|Package 199 pack|Market1|Active
1001098068|ResidentialRegular|01/20/2007|Annual Pack|Premium Package|Annual|08/28/2017||027445053518|Primary|Pace - 31|000223871682|Yes|AMP|English Movies pack|Market1|Active
1001098068|ResidentialRegular|01/20/2007|Annual SingleUnit Jun17 Pack|Secondary Pack|Annual|08/28/2017||032089364015|Secondary|Kaon|000017213968|Yes|AMP|SingleUnit|Market2|Active

Nesta, a 16ª coluna é Market, na qual quero alterar Market1para MarketPrime. O nome do arquivo émarketinfo_2018-06-26.csv

Tentei o seguinte código:

awk -F '| +' '{gsub("Market1","MarketPrime",$16); print}' OFS="|" marketinfo_2018-06-26.csv > marketinfo_2018-06-26.csv

Isso é executado sem qualquer saída, mas a string Market1ainda permanece.

awk text-processing
  • 4 respostas
  • 21478 Views
Martin Hope
Apricot
Asked: 2018-05-12 02:08:58 +0800 CST

lvextend para estender a raiz no RHEL 6

  • 0

Eu tenho um servidor que processa dados e começou a me dar este erro:

write error: no space left on device
cannot create temp file for here-document: no space left on device

Embora eu use o ubuntu 14.04 como meu sistema operacional principal, gerenciar o sistema de arquivos está além do meu entendimento e, portanto, esta questão.

df -h 

estampas

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       99G   94G   16M 100% /
/dev/sda2             477M   39M  413M   9% /boot
/dev/sda1             200M  264K  200M   1% /boot/efi
/dev/mapper/VolGroup-lv_home
                      1.5T  453G  996G  32% /home
shmfs                  30G     0   30G   0% /dev/shm
shmfs                  30G     0   30G   0% /dev/shm
shmfs                  30G     0   30G   0% /dev/shm

Aparentemente não tenho muito espaço sobrando no meu lv_root. eu corri

df -i

Filesystem              Inodes  IUsed     IFree IUse% Mounted on
/dev/mapper/VolGroup-lv_root
                       6553600 143617   6409983    3% /
/dev/sda2               128016     22    127994    1% /boot
/dev/sda1                    0      0         0     - /boot/efi
/dev/mapper/VolGroup-lv_home
                     101588992  44952 101544040    1% /home
shmfs                  4085528      1   4085527    1% /dev/shm
shmfs                  4085528      1   4085527    1% /dev/shm
shmfs                  4085528      1   4085527    1% /dev/shm

E isso indica que ainda tenho muito espaço livre (não tenho certeza se meu entendimento está correto).

Tentei remover arquivos de, /var/logmas como esses arquivos não eram muito maiores em tamanho, nada aconteceu. Eu li sobre lvextende pensei que poderia aumentar o tamanho do lv_rootVolGroup.

sudo lvs --segments

me dá

LV      VG       Attr       #Str Type   SSize  
  lv_home VolGroup -wi-ao----    1 linear   1.36t
  lv_home VolGroup -wi-ao----    1 linear 157.78g
  lv_root VolGroup -wi-ao----    1 linear 100.00g
  lv_swap VolGroup -wi-ao----    1 linear  20.00g

sudo vgdisplay VolGroup

me dá

 VG Name               VolGroup
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               1.63 TiB
  PE Size               4.00 MiB
  Total PE              427545
  Alloc PE / Size       427545 / 1.63 TiB
  Free  PE / Size       0 / 0   

Depois de saber que todas as minhas partições compartilham o mesmo nome de grupo de volume VolGroup e o tamanho do VG é 1,63 TiB, tentei aumentar o lv_rootespaço em 400Gib

sudo lvextend -L +400G /dev/mapper/VolGroup-lv_root

mas recebi esta mensagem de erro

Insufficient free space: 102400 extents needed, but only 0 available

A mesma mensagem com diferentes extensões necessárias para 40G.

O sistema operacional do servidor é RHEL 6 e estou processando dados que estão sendo inseridos no banco de dados Oracle.

rhel lvm
  • 1 respostas
  • 828 Views
Martin Hope
Apricot
Asked: 2017-12-15 00:41:16 +0800 CST

Comece o loop toda vez onde terminou por último

  • 1

Eu tenho cerca de 1 milhão de imagens em um diretório. Os arquivos foram numerados de 1 a n. Estou usando o loop for para iterar sobre cada imagem. Como cada iteração é verificada por indivíduos, apenas um determinado número de iterações pode ser feito em um dia. Quando começo o loop novamente no dia seguinte, o loop obviamente começa a partir do primeiro arquivo novamente.

Salvei os arquivos iterados por meio do loop em um arquivo de texto e li a última linha do arquivo de texto antes do início do loop todas as vezes. Estou tentando usar o último arquivo lido como um começo para o loop for.

O seguinte é o código feito até agora:

query=/ImageFolder/*.jpg
fil=$( tail -n 1 readfiles.txt )

for f in $query
    do
      python ~/runprog.py --query $f
    done

Não tenho certeza de como usar o $fil como meu ponto de partida no loop for e começar a iterar os arquivos subsequentes a partir dele.

bash for
  • 1 respostas
  • 128 Views
Martin Hope
Apricot
Asked: 2017-12-06 22:35:17 +0800 CST

loop while para verificar se a entrada do usuário não está no loop for

  • 0

Estou listando arquivos de uma pasta e obtendo uma entrada do usuário para selecionar um dos arquivos.

files=$(ls ~/VideoExtract/*.avi)
i=1
for j in $files
do
echo "$i.$j"
file[i]=$j
i=$(( i + 1 ))
done
echo ""
echo ""
read -p "Enter the serial number from the above list : " input
clear

Suponha que se eu tiver 3 arquivos, o código acima liste todos os três arquivos listados com números de série 1,2,3. Quero validar se o usuário fornece a entrada correta e não quebrar o código até receber uma entrada correta. Para fazer isso, usei um loop while após o código acima

while [[ "$input" =~ ["$i"] ]]
do
echo "Please provide a serial number from the list given below."
files=$(ls ~/VideoExtract/*.avi)
i=1
for j in $files
do
echo "$i.$j"
file[i]=$j
i=$(( i + 1 ))
done
read -p "Enter the serial number from the above list : " input
done

Isso retorna a lista de arquivos novamente. O problema é que, se eu tiver 3 arquivos e digitar 4, o loop continuará funcionando, mas se eu fornecer 5, o loop será interrompido e passará para a próxima linha do código. Não tenho certeza se o problema está na linha

while [[ "$input" =~ ["$i"] ]] 

ou

i=$(( i + 1 ))

Em vez de =~tentei com !=e ! $input == $ioutras combinações semelhantes, como com e sem [] para $i. Nada parece funcionar.

Como executo o loop while até o momento em que o usuário fornece uma entrada válida que esteja dentro do intervalo de $i.

shell-script for
  • 1 respostas
  • 545 Views
Martin Hope
Apricot
Asked: 2017-12-05 00:20:14 +0800 CST

Como mv .bin bin

  • 13

Eu estava escondendo algumas das pastas na minha máquina Ubuntu. Por engano, também escondi a pasta bin usando

cd /
mv bin .bin

Agora eu poderia cd para .bin, mas não consigo exibir o diretório bin. Alguém pode ajudar? Eu estava tentando o seguinte comando:

mv .bin bin

Eu estou recebendo o seguinte erro

bash: /bin/mv: No such file or directory

Tentei fazer login como root, mas minha máquina está me pedindo para instalar o login. Ao fazer o login de instalação do apt-get, recebo uma mensagem de que o login é atualmente a versão mais recente.

linux mv
  • 1 respostas
  • 2849 Views

Sidebar

Stats

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

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

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