Você também pode usar um oneliner se confiar em seus timestamps.
mv $(ls -tr ServicesWebApp* | tail -1) /tmp/
Ou se preferir confiar nos nomes dos arquivos.
mv $(ls ServicesWebApp* | sort -n | tail -1) /tmp/
Eu preciso mover o arquivo mais recente em um diretório onde o nome do arquivo corresponda a uma convenção de nomenclatura "ServicesWebApp".
Exemplo: existe um diretório com 5 arquivos com nomes semelhantes.
ServicesWebApp-1005.war created on 3/10/2016
ServicesWebApp-1004.war created on 3/09/2016
ServicesWebApp-1003.war created on 3/08/2016
ServicesWebApp-1002.war created on 3/07/2016
ServicesWebApp-1001.war created on 3/06/2016
Eu preciso mover o mais recente para outro diretório, neste exemplo seria. ServiçosWebApp-1005.war criado em 10/03/2016
Você também pode tentar este:
mv $(find . -type f -name "ServicesWebApp*" -printf "%T@ %f\n" | sort -n | awk '{print $2}' | tail -1 ) /new/file/path/
tstamp=0
file=
for f in ServicesWebApp*
do
y=$(stat -c "%Y" "$f")
if [ $y -gt $tstamp ]
then
file="$f"
tstamp=$y
fi
done
echo cp "$file" /somewhere/else
Você pode tentar executar uma linha usando a subcategoria de comandos
$ mv $(ls -t /location/path/ServicesWebApp* | head -n1) /to/new/destination/path
Indo adiante
$ ls -t /location/path/ServicesWebApp* | head -n1
/location/path/ServicesWebApp-1005.war
Portanto, o comando deve ser interpretado como
$ mv /location/path/ServicesWebApp-1005.war /to/new/destination/path
Tags rename shell shell-script