Linux

24
avril 2022

Shell Script Separador - Mover N Arquivos Para Subdiretórios - Linux

Escrito por Mario Medeiros não comentários

Shell Script que move N arquivos de um diretório para subdiretórios

Problema inicial:
Ter milhares de arquivos (algo como 50 mil arquivos) em um único diretório e ter a necessidade de mover/separar em subdiretórios com quantidades menores, por exemplo, mil arquivos em cada diretório.

Uma solução que encontrei foi gerar um shell script que gere os subdiretorios e mova os arquivos com limites de mil arquivos em cada diretório destino.

 

Obs 0: O script deve estar no mesmo diretório dos N arquivos que serão movidos.
Obs 1: O diretório de destino onde serão criados os subdiretórios deve estar fora da estrutura onde estão os arquivos originais, parar não haver erros nas buscas do comando find ou outros erros.

Link para o vídeo descritivo
Link para o GitHub

Categorizado em : Linux Tags : sem tags


16
fevereiro 2019

Convertendo Arquivos de Vídeo para iPhone com HandBrake

Escrito por Mario Medeiros 1 comentário

Quando se tem mais de um tipo de smartphone (no caso um Android e um iPhone), muitas coisas podem não ser tão compatíveis entre si.
Não vou entrar no mérito de “quem é o melhor”, mas falarei de forma breve ao menos, sobre compatibilidade de arquivos, que no caso são os de video.
A situação/cenário é o seguinte:

Gravo videos com o Android, copio para o desktop Linux, ajusto/edito com o OpenShot e exporto como mp4 para web, tentando assim, manter a melhor qualidade possível. Encontrei há algum tempo um script do ffmpeg que reduz o tamanho dos arquivos numa proporção até que razoável.

Até aí, nada de mais.

Quando tentei enviar para o iPhone (que tem suas frescuras e imbecilidades, mas não vem ao caso), os vídeos estavam sem áudio. Aí o demente aqui, pensou: aaaahhhhh, é só mudar o codec do ffmpeg e pronto, moleza. Ledo engano. Cada vez ficava pior o formato, a ponto de muitas vezes, ficar até maior que original e ainda sem áudio.

Numa busca um pouco mais refinada, com mais raciocínio e paciência, encontrei no site Command Line Fu, um comando utilizando o HandBrake, que é um Video Transcoder Open Source. Eu utilizo o mesmo para extrair arquivos de DVDs. Mesmo conhecendo a ferramente há um bom tempo, nunca me passou pela cabeça (normal isso, muito normal) que o mesmo tivesse recursos por linha de comando.

Claro, deve-se instalar o handbrake-cli que é separado do pacote Handbrake. Mas isso é moleza.

Em Debian e derivados, utilizar o apt-get install handbrake-cli

Depois é só utilizar o comando abaixo na pasta onde estão os arquivos. Ah, o comando original do site, está pronto para conversão em lote, ou seja, pode ter N arquivos na pasta que serão convertidos todos.

Fiz uns ajustes no código. Foram somente para criar uma pasta separada e o formato dos arquivos de origem de AVI para MP4. Foi o que eu precisava.

As vantagens desse script foram que além de ficar no formato correto para leitura no iPhone, ficaram menores ainda do que com o script anterior e com uma perda imperceptível (ao menos para mim) de qualidade visual.

Espero que este pequeno post, possa ser útil, mesmo para quem não tenha esse problema de compatibilidade que tive, mas que precise manter uma boa qualidade dos vídeos em tamanhos relativamente pequenos.

Seguem o shell script que fiz com o comando e os links sobre a documentação do HandBrake.

Obs: o shell que fiz, verifica se existe o diretório de destino criado, se houver ele começa a conversão. Caso não exista, ele cria o diretório e inicia a conversão. Foi mais para resolver meu problema de preguiça. Altere conforme necessário.

Links e referências:

Link do comando

Documentação do HandBrakeCLI

 

Shell Script com o comando:

#!/bin/bash

#Data: 2018-12-09

#Versao: 1.0.0

#Autor: Mario Medeiros

if [ -e "convertidos-iphone" ]

then

find . -name \*.mp4 -exec HandBrakeCLI -i "{}" -o convertidos-iphone/"{}".iphone.mp4 --preset="iPhone & iPod Touch" \;

else

echo " diretorio não existe - criando diretorio"

mkdir convertidos-iphone && find . -name \*.mp4 -exec HandBrakeCLI -i "{}" -o convertidos-iphone/"{}".iphone.mp4 --preset="iPhone & iPod Touch" \;

fi

exit

 

Data original do texto: 2018-12-17


04
outubro 2018

Listagem de Nomes Aleatórios em Shell e Zenity

Escrito por Mario Medeiros 1 comentário

Este artigo (nem sei se poderíamos chamar de artigo, mas vai assim mesmo), é bem curto e com um código bem simples. Gerar um lista de itens aleatória com base em uma lista pré-definida.

Com base em um arquivo txt com nomes (organizado com um nome por linha, claro), o script lê o arquivo texto e gera uma outra lista na tela com as linhas ordenadas de forma aleatória.

Super básico e simples. Serve para uso em sorteios de brindes e outros. Pode-se limitar o resultado pela tela de número de itens a ser mostrado. Se caso não for passado nenhum parâmetro, o script retorna por padrão, 10 itens.

O código está no github

Segue abaixo o código, em shell e Zenity.

#!/bin/bash
#
#Script simples em bash com zenity, para sorteio de nomes de uma lista em txt
#Seleciona arquivo organizado com nomes por linhas, embaralha o conteúdo de
#forma aleatória (randomica) e mostra na tela a quantidade de itens selecionados
#
#Autor: Mario Medeiros
#Nome Aplicação: Sorteio
#Nome Arquivo: sorteio.sh
#Data: 2018-10-04
#Versão: 1.0.0
#
#Dependências: Zenity
#
#########################################################################

arquivo=$(zenity --file-selection --title="Selecione Um Arquivo de Lista")
numero=$(zenity --entry --text="Digite O Número De Itens" --title="Número De Itens Da Lista")
cat $arquivo | sort -R | head -$numero | zenity --text-info --auto-scroll --width=500 --height=500

Categorizado em : Linux Tags : sem tags


- página 1 de 10 seguinte »