[ATUALIZAÇÃO-1]:Se possível, dê-me contras de motivação para aprender os comandos mais simples.
Então, eu tenho um arquivo no diretório:
ls | grep *.mp4
vídeo.mp4
Eu uso este comando para renomear e mover arquivos aleatoriamente em outro diretório:
for a in *.mp4; do mv -n "$a" "${a/*/$RANDOM.mp4}"; done; mv *.mp4 /home/misdeed/Documents
Tudo bem, recebo um nome aleatório para video.mp4
cd Documents; ls | grep *.mp4
19889.mp4
Pergunta:
Como usar é:
a="This is name file"
echo $a
Este é o arquivo de nome
para renomear *.mp4 (não aleatoriamente) e para obter
Este é o nome do arquivo.mp4
Eu preciso de algo assim:
a="This is name file"
COMMAND FOR RENAME BUT WITHOUT $RANDOM. I WANT USE $a in renamed file
Responder1
Digamos que o nome original seja conhecido antecipadamente e seja video.mp4
. Você renomeia com
mv video.mp4 "$a".mp4
Notas:
- Se a variável estiver vazia (ou não definida), o nome final será
.mp4
. Nomes que começam com ponto (.
) ficam "ocultos", simplesmentels
os ignora, você precisals -a
vê-los. - Se já existir um arquivo com o nome de destino, ele será perdido e o
video.mp4
arquivo anterior receberá o seu nome. Para evitar contratempos, consideremv -i
; ele solicitará confirmação se o caminho de destino existir.
Responder2
Presumo que você queira que o novo nome de arquivo aleatório seja impresso. Nesse caso, o mais fácil é reutilizar o valor da sua variável aleatória.
for file in *.mp4; do
RANDOM_NAME="${file/*/$RANDOM.mp4}";
mv -n "$file" /home/misdeed/Documents/"$RANDOM_NAME";
echo "This is name $RANDOM_NAME.mp4";
done