Como um iniciante no Ubuntu. Estou tentando baixar links de vários arquivos de texto com wget2 em lote. O -P "$f" cria o nome do diretório com o sufixo .txt. É possível ignorar .txt para -P "$f". Qualquer sugestão de modificação.
for f in *.txt;do wget2 -i "$f" -P "$f";done
Eu acho que a maneira mais elegante no bash é usar basename :
Seu script se torna:
fonte
${f%.txt}
expande como$f
mas com.txt
o sufixo (se houver) removido. Não se esqueça de aspas duplas como você citou corretamente$f
.A sintaxe é portátil, leva um padrão (como geração de nome de arquivo, também conhecido como padrão globbing, não um regex). Por exemplo
${f%.*}
, dá-lhe tudo menos a extensão, não importa qual seja a extensão. Aqui o ponto é literal e o asterisco é um curinga.POSIX especifica alguns recursos como este. Bash os suporta e muito mais. Documentação: