Comme l'a souligné Kos, il n'est peut-être pas possible de connaître le fichier le plus ancien (selon la date de création).
Si l'heure de modification vous convient, et si le nom du fichier n'a pas de nouvelle ligne :
rm "$(ls -t | tail -1)"
Il semble que vous puissiez supprimer le fichier modifié le plus ancien au lieu du fichier créé le plus ancien ;
Je considère que c'est la méthode la plus sûre, car elle ne cassera pas les noms de fichiers contenant des retours à la ligne :
stat --printf='%Y %n\0' * | sort -z | sed -zn '1s/[^ ]\{1,\} //p' | xargs -0 rm
stat --printf='%Y %n\0' *
:imprime une liste séparée par NUL de l'heure de la dernière modification suivie du chemin du fichier pour chaque fichier dans le répertoire de travail courant ;sort -z
:trie la liste en utilisant NUL comme séparateur de ligne ;sed -zn '1s/[^ ]\{1,\} //p'
:supprime la première occurrence d'une chaîne contenant un ou plusieurs caractères non un espace suivi d'un espace de la première ligne terminée par NUL et l'imprime ;xargs -0 rm
:passe la ligne terminée par NUL àrm
comme argument ;
% touch file1
% touch file2
% stat -c '%Y %n' *
1447318965 file1
1447318966 file2
% stat --printf='%Y %n\0' * | sort -z | sed -zn '1s/[^ ]\{1,\} //p' | xargs -0 rm
% ls
file2