Não é o único caminho, mas o melhor e mais simples é de fato um loop e de preferência um loop for. É trivial fazer:
cd /test
for file in test*; do
mv "$file" /test/dir/"$file".pgp
done
É isso.
Eu tenho 4 arquivos em um diretório, o comando mv não moverá todos os arquivos E adicionará uma extensão .pgp.
Eu esperava manter isso na linha de comando e não criar um script. Talvez eu esteja fazendo a pergunta errada aqui / google.
4 arquivos estão em /test/
- test-1 test-2 test-3 test-4
Eu tentei mv /test/test* /test/dir/*.pgp
e não funciona porque * .pgp não é um diretório.
É a única maneira de fazer isso com um loop? Além disso, teria que ser um loop for? Eu sou muito novo em scripts de shell e não muito confiante ...
Você pode renomear os arquivos primeiro e movê-los:
rename 's/(.*)/$1.pgp/' test*; mv test*.pgp /test/dir
Sim, um loop, um loop for, é o que deve ser usado.
Em dois passos simples:
set -- test-{1..4}
for f; do mv "$f" "dir/$f.pgp"; done