Команда для удаления всех файлов, кроме некоторых последних, которые работают как для Solaris, так и для Linux

567
Ankit

Я пытаюсь одна команда, которая удаляет все файлы из местоположения, кроме самого последнего. У меня есть рабочая команда для Linux, но она не работает на машине Solaris.

Команда ниже удалит все файлы, кроме последних 10.

ls -l /*.tps | head -n -10 | rm -rf 
0

3 ответа на вопрос

0
xenoid
ls -t | tail -n +2 | xargs rm 

В замедленном режиме:

  • список всех файлов, отсортированных по времени, сначала самые новые
  • печать, начиная со 2-го (поэтому пропустите сначала)
  • передать имена rm
спасибо @xenoid, но это не сработает. У меня есть рабочая команда, но она не работает на солярисе. Solaris не принимает 2 аргумента для команды «голова / хвост». (хвост -n +2) Ankit 7 лет назад 0
@Ankit Помогает ли [это] (https://stackoverflow.com/questions/314321/whats-the-solaris-equivalent-to-the-bsds-tail-n100)? xenoid 7 лет назад 0
0
ben

Следуя man-страницам Oracle и предполагая, что вы имеете в виду «самые последние» и «новейшие» файлы, я предлагаю следующий подход:

ls -1tr | tail -n +11 | xargs rm для Linux и

ls -1tr | /usr/xpg4/bin/tail -n +11 | xargs rmдля оракула

0
Sasha Golikov

Чтобы удалить все файлы из местоположения, кроме самого последнего, вы можете использовать эту кроссплатформенную команду:

ls -1t /location | sed -n '2,$p' | xargs rm 

Программа Sed 2,$pпечатает каждую строку с 2 до конца ввода.

Похожие вопросы