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
Postar um comentário