Você pode simplesmente fazer uma classificação simples. Supondo que seus nomes de arquivos não contenham espaços em branco ou outros caracteres estranhos, este comando sempre fornecerá o arquivo mais antigo:
find . -name '*dat' | sort -r | tail -n1
Se você precisa lidar com caracteres estranhos, use
find . -name '*dat' -print0 | sort -zr | tr 'file=$(find . -name '*dat' -print0 | sort -zr | tr 'find . -name '*dat' -print0 | sort -zr -t "_" -k 2 | tr 'for file in *dat; do
echo "$file" ## process the file here
rm "$file"
done
' '\n' | tail -n1
' '\n' | tail -n1)
while [ -e "$file" ]; do
if [ -e "$file" ]; then
echo "$file"; ## Process the file here
rm "$file";
fi;
file=$(find . -name '*dat' -print0 | sort -zr | tr 'find . -name '*dat' | sort -r | tail -n1
' '\n' | tail -n1)
done
' '\n' | tail -n1
Então, você poderia fazer algo nos moldes de
find . -name '*dat' -print0 | sort -zr | tr 'file=$(find . -name '*dat' -print0 | sort -zr | tr 'find . -name '*dat' -print0 | sort -zr -t "_" -k 2 | tr 'for file in *dat; do
echo "$file" ## process the file here
rm "$file"
done
' '\n' | tail -n1
' '\n' | tail -n1)
while [ -e "$file" ]; do
if [ -e "$file" ]; then
echo "$file"; ## Process the file here
rm "$file";
fi;
file=$(find . -name '*dat' -print0 | sort -zr | tr '%pre%' '\n' | tail -n1)
done
' '\n' | tail -n1
Se você realmente precisar classificar apenas o primeiro conjunto de 10 dígitos, poderá fazer algo como (supondo que você deseja classificar entre os dois primeiros _
):
%pre%
Observe também que, no caso de você mostrar onde todos os arquivos começam com os mesmos caracteres e apenas os números mudam, você não precisa classificar nada:
%pre%