Я бы просто сохранил список файлов во временном файле и посчитал строки там, прежде чем пытаться rm
. (Или просто сначала посчитайте файлы.)
Вы также можете перенаправить ошибки с rm
на / dev / null
, но это замаскирует допустимые ошибки тоже.
Скажем
tmpfile=$(mktemp)
ls -t | tail -n +$startnumber > $tmpfile
if [ -s "$tmpfile" ] ; then
echo not empty, do something with filelist in $tmpfile
else
echo empty, do something else
fi
rm "$tmpfile"
Конечно, использование ls
как это приведет к сбою, если по какой-то причине у вас есть имена файлов, содержащие символы новой строки. (Да, это возможно. Хотя в данном случае это будет означать, что некоторые файлы не удаляются, хотя они должны быть удалены.)