Fazer um loop for para mover arquivos com uma extenção para outra

 Mover .mp4 e .mp3 para .fox

B="$(ls | grep -E "(.mp4|.mp3)" | wc -l)"
C="$(seq -s ' ' $B)"

for i in $C
do
   name="$(ls | grep -E "(.mp4|.mp3)" | tr -d "(.mp4|mp3)" | sed -n "1"p)"
   ext_s="$(ls | grep -E "(.mp4|.mp3)" | tr -d "$name" | sed -n "1"p)"
    mv "$name"$ext_s "$name".fox   &&                                                                       echo $i sequência
done  
 

A variável B vai verificar quantos arquivos existem que tem a extenção .mp4 e .mp3. O ls mostrá todos arquivos o grep com suporte a expressão regular vai imprimir as linhas que tiverem as strings .mp4 e .mp3 e wc -l vai imprimir quantas linhas possuem  as extensões .mp4 e .mp3 cujo o grep mostrá.

A variável C transforma o número de wc -l em uma sequência de uma linha.

O loop for que está na variável i está na sequência da variável C.

Na seção de comandos a variável name imprimi a cada loop o nome do arquivo que falta para o mv mover, a variável ext_s mostrá a extenção do arquivo a cada inicialização do loop. 

O comando echo $i sequência mostra em qual número está na sequência.

 Curiosidade: o comando seq -s ' ' N  . O operador -s determina atrávez das aspas o espaço que um número terá do outro. 

Mover .mp3 para .waw

lx="$(ls *.mp3 2>/dev/null | wc -w | xargs seq -s ' ')"

for i in $lx
do
   name_ext="$(ls -h *.mp3 2>/dev/null | grep .mp3 | sed -n "1p")"
   name="$(echo $name_ext | tr -d .mp3)"
   mv $name_ext  $name.waw
done


A variável lx determina a sequência de quantos arquivos com a extenção .mp3 existem. O ls localiza os arquivos .mp3,  wc -w imprimi quantas strings tem em uma linha, xargs pega o resultado do comando anterior e joga para seq -s ' ' para gerar uma sequência.

O loop for está na variável i que está na sequência da variável lx.

A variável name_ext mostrá o nome do arquivo mais a extenção .mp3. 

A variável name mostrá somente o nome do arquivo.

for i in *.txt ; do
  name_file="$(ls *.txt | cut -d. -f1 | sed -n "1p")"
  mv $name_file.txt $name_file.wow
done

O loop for está na sequência de quantos arquivos .txt encontrar. A variável name_file determina o nome  do arquivo. A função do cut é  marcar oque vem antes do ponto do arquivo e depois usando o parâmetro -d.








 



Comentários

Postagens mais visitadas deste blog

Quando compila o NSS da o erro: C_Initialize failed: 0x00000030, CKR_DEVICE_ERROR

Variável de { . Variável de matriz

Filtragem de strings no terminal