Você pode usar a substituição de comandos para isso (leia man sh
e procure por ele).
Se ls /list | tail -n 1
imprimir o arquivo correto, você poderá fazer isso:
file=$(ls /list | tail -n 1)
mv "/list/$file" "/list/PREFIX$file"
EDIT: Como apontado por @Wildcard isso pode falhar se os nomes dos arquivos contiverem novas linhas.
Uma solução que deve funcionar mesmo com novas linhas em nomes de arquivos usa find -print0
e {sort,head,tail} -z
(parece que nem todas as versões suportam a opção -z
/ --zero-terminated
, o GNU faz):
file=$(find /list -print0 | sort -z | tail -n 1 -z)
mv "$file" "$(dirname "$file")/PREFIX$(basename "$file")"