Вы попробовали изменение consolefont к другому значению? У меня была та же проблема и
consolefont="cyr-sun16"
хорошо работает для меня.
Если Вы хотите циклично выполниться по файлам, никогда не используйте ls
*. tl; доктор There является большим количеством ситуаций, где Вы закончили бы тем, что удалили неправильный файл или даже все файлы.
Тем не менее, к сожалению, это - хитрая вещь сделать правильно в Bash. Существует рабочий ответ, законченный в дублирующийся вопрос мое еще более старое find_date_sorted
, который можно использовать с маленькими модификациями:
counter=0
while IFS= read -r -d '' -u 9
do
let ++counter
if [[ counter -gt 3 ]]
then
path="${REPLY#* }" # Remove the modification time
echo -e "$path" # Test
# rm -v -- "$path" # Uncomment when you're sure it works
fi
done 9< <(find . -mindepth 1 -type f -printf '%TY-%Tm-%TdT%TH:%TM:%TS %p\0' | sort -rz) # Find and sort by date, newest first
* Никакие парни преступления - я также использовал ls
прежде. Но это действительно не безопасно.
Править: Новый find_date_sorted
с модульными тестами.
Безусловно самый легкий метод должен использовать zsh и его спецификаторы шарика: Om
к виду путем уменьшения возраста (т.е. самый старый первый) и [1,3]
сохранить только первые три соответствия.
rm ./*(Om[1,3])
См. также, Как я фильтрую шарик в zsh для большего количества примеров.
И действительно учтите совет l0b0: Ваш код повредится ужасно, если у Вас будут имена файлов, которые содержат специальные символы оболочки.
Во-первых, -R
опция для рекурсии, которая является, вероятно, не, что Вы хотите - который будет искать во всех подкаталогах также. Во-вторых, <
оператор (если не рассматриваемый как перенаправление) для сравнения строк. Вы, вероятно, хотите -lt
. Попытка:
while [ `ls -1A | grep ^- | wc -l` -lt 3 ]
Но я использовал бы, находят здесь:
while [ `find . -maxdepth 1 -type f -print | wc -l` -lt 3 ]
Я знаю, что это - грех для парсинга ls
, но что относительно этого:
find . -type f -maxdepth 1 | xargs ls -ltr | sed '1,3d' | awk '{print $9}' | xargs rm
Быстрый тест с 5 пустыми файлами:
$ >1
$ >2
$ >3
$ >4
$ >5
$ find . -type f -maxdepth 1 | xargs ls -lt | sed '1,3d' | awk '{print $9}' | xargs rm
$ ls -1
3
4
5
ls
вывод и использование find
и xargs
вместе неправильным способом. Если Вы объединяетесь find
и xargs
Я рекомендую Вам использовать find
s -print0
и соответственно xargs
s -O
опции. Чтение об Использовании Находит для получения дополнительной информации о предмете. Вы могли бы также хотеть смотреть и читать о том, почему Парсинг ls очень плох.
– Rany Albeg Wein
28.04.2013, 11:32
Можно использовать следующую функцию для получения новейшего файла в каталоге:
newest_in()
{
local newest=$1
for f;do [[ $f -nt $newest ]] && newest="$f"; done;
printf '%s\n' "$newest"
}
Дайте ему другой набор файлов исключением новейшего файла после каждого повторения.
Подсказка: при содержании начального набора файлов в массиве, названном "$ {файлы}", затем сохраните индекс новейшего файла, найденного, и unset 'files[index]'
перед следующим повторением.
Использование: newest_in [set of files/directories]
Демонстрационный вывод:
[rany$] newest_in ./*
foo.txt
[rany$]
Эта острота делает все это, я думаю:
ls -t1 /home/user/test | tail -n +4 | xargs -I{} rm -- "{}"
Вот одно решение:
rm /appserver/webapplogs/$(ls -t1 /appserver/webapplogs/|tail -1)
Чтобы удалить все, кроме 3 новейших файлов, использующих ZSH GLAC, вы можете использовать OM
(Capital o), чтобы сортировать файлы из старых до новейшего и индикатора, чтобы захватить нужные файлы.
rm ./*(Om[1,-4])
# | |||| ` stop at the 4th to the last file (leaving out the 3 newest)
# | |||` start with first file (oldest in this case)
# | ||` subscript to pick one or a range of files
# | |` look at modified time
# | ` sort in descending order
# ` start by looking at all files
Другие примеры:
# delete oldest file (both do the same thing)
rm ./*(Om[1])
rm ./*(om[-1])
# delete oldest two files
rm ./*(Om[1,2])
# delete everything but the oldest file
rm ./*(om[1,-2])
((++counter>3))
как Ваш тест. Это приятно сжато. Что касается острот: Если краткость является беспокойством, переносят код в функцию, то не волнуйтесь об этом. – Sorpigal 05.04.2012, 16:38