msoliver
(usa Debian)
Enviado em 10/01/2021 - 15:51h
condtec escreveu:
Tenho um script.sh que recebe o seguintes argumentos:
./script.sh /home/thiago/Documentos/scripts/2021-01-08 10-21-55_10.34.4.mp4 /home/thiago/Documentos/scripts/2021-01-08 12-46-17_12.58.52.mkv /home/thiago/Documentos/scripts/3.mp4
Como é uma aplicação .desktop chamando o %F ele passa os arquivos dessa forma, não separando por "". Por conter espaço nos nome o BASH interpreta como sendo 5 parâmetros por conter espaço em branco nos nomes. Preciso que ele reconheça apenas 3 parâmetros. A quebra pode ser feita pela extensão .mp4 .mkv ou outra qualquer. Preciso que o resultado seja este:
1. /home/thiago/Documentos/scripts/2021-01-08 10-21-55_10.34.4.mp4
2. /home/thiago/Documentos/scripts/2021-01-08 12-46-17_12.58.52.mkv
3. /home/thiago/Documentos/scripts/3.mp4
tentei mas sem sucesso:
find "$@" -type f -name '*.mp4' -exec echo -e "{}/n" \;
Boa tarde condtec.
Sugestões:
1- Retire os espaços do nome dos arquivos, isso só causa problemas....
O comando rename torna isso muito simples,
Exemplo:
ls -l Público/Arquivo*
-rw-r--r-- 1 adminq adminq 0 jan 10 15:40 'Público/Arquivo teste 1.txt'
-rw-r--r-- 1 adminq adminq 0 jan 10 15:40 'Público/Arquivo teste 2.txt'
-rw-r--r-- 1 adminq adminq 0 jan 10 15:40 'Público/Arquivo teste 3.txt'
-rw-r--r-- 1 adminq adminq 0 jan 10 15:40 'Público/Arquivo teste 4.txt'
-rw-r--r-- 1 adminq adminq 0 jan 10 15:40 'Público/Arquivo teste 5.txt'
adminq@Q4OS:$ → rename -n 's/ /_/g' Público/*
rename(Público/Arquivo teste 1.txt, Público/Arquivo_teste_1.txt)
rename(Público/Arquivo teste 2.txt, Público/Arquivo_teste_2.txt)
rename(Público/Arquivo teste 3.txt, Público/Arquivo_teste_3.txt)
rename(Público/Arquivo teste 4.txt, Público/Arquivo_teste_4.txt)
rename(Público/Arquivo teste 5.txt, Público/Arquivo_teste_5.txt)
Para efetivar a alteração
RETIRE o -n
Opção 2:
Passe cada parâmetro entre aspas duplas:
Exemplo:
./param.sh "Público/Arquivo teste 1.txt" "Público/Arquivo teste 2.txt" "Público/Arquivo teste 3.txt" "Público/Arquivo teste 4.txt" "Público/Arquivo teste 5.txt"
Nº parametros:5
Parametros:
P1:Público/Arquivo teste 1.txt
P2:Público/Arquivo teste 2.txt
P3:Público/Arquivo teste 3.txt
P4:Público/Arquivo teste 4.txt
P5:Público/Arquivo teste 5.txt
cat param.sh
#!/bin/bash
echo -e "Nº parâmetros:$#\nP1:$1\nP2:$2\nP3:$3\nP4:$4\nP5:$5"
______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando:
lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
O qual, "filtra" a página: "https://www.vivaolinux.com.br/termos-de-uso/",
Mostrando o seguinte:
Se você sanou sua dúvida ou resolveu um problema a partir de um
tópico criado, é extremamente recomendável que acesse o tópico e
marque-o como "RESOLVIDO". E mais recomendável ainda que você eleja
como melhor resposta a que mais lhe ajudou.
______________________________________________________________________