Adicionando prefixo ao maior nome de arquivo de números

0

Por isso, tenho uma lista de arquivos com números semelhantes ao exemplo abaixo:

/list/CAP_0045.dat
/list/CAP_0044.dat
/list/CAP_0046.dat

Eu quero renomear o arquivo com o maior número para adicionar um prefixo a ele. Como faço isso?

    
por user166242 17.04.2016 / 22:14

1 resposta

0

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")"
    
por 17.04.2016 / 22:52

Tags