1
resposta

Outro jeito de pegar os nomes dos arquivos

Um jeito bem interessante de interagir com os arquivos do diretório é

for i in *; do echo $i; done

o comando echo * tem o mesmo efeito do ls e é muito mais rápido, usando o comando time é possível verificar isso.

1 resposta

Olá, Lucas!

Sua observação é muito interessante, obrigado por compartilhar.

O comando echo * realmente lista os nomes dos arquivos no diretório atual, assim como o comando ls. Entretanto, é importante notar que eles não são exatamente iguais. O comando ls é mais poderoso e fornece mais informações sobre os arquivos e diretórios, como permissões, donos, data de modificação, entre outros.

O loop for que você mencionou é uma ótima maneira de interagir com múltiplos arquivos em um diretório. No contexto da atividade, poderíamos usá-lo para converter todos os arquivos .jpg para .png no diretório imagens-livros. Veja como poderia ser:

#!/bin/bash

CAMINHO_IMAGENS=~/Downloads/imagens-livros

for i in $CAMINHO_IMAGENS/*.jpg;
do
    echo "Convertendo $i"
    convert "$i" "${i%.jpg}.png"
done

Nesse script, o loop for passa por todos os arquivos .jpg no diretório imagens-livros. Para cada arquivo, ele usa o comando convert para criar uma versão .png. A expressão "${i%.jpg}.png" é usada para gerar o nome do arquivo de saída, substituindo a extensão .jpg por .png.

Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software