LINUX.ORG.RU

Удалить старые файлы как

 ,


0

2

Триста каталогов с наименованиями компьютера и кучей конфигураций компьютера внутри. Нужна конечно только актуальная, старые удалить, оставить самую молодую. ls | head | xargs нашёл. А как это выполнить по всем каталогам?


Какое однако классное ТЗ

egorcod
()

Нихемного не понятно что ты хочешь, но если нужно проитерировать по директориям то вот

for d in */; do
    echo "$d" # или что ты там с директориями хочешь делать
done
oxapentane
()
Последнее исправление: oxapentane (всего исправлений: 1)
Ответ на: комментарий от oxapentane

Вроде получилось. Спасибо.

├── TROF-9
│   ├── 20161122.SID
│   ├── 20161213.SID
│   ├── 20170110.SID
│   └── 20170425.SID
├── USECR01
│   └── 20190114.SID
├── USECR03
│   ├── 20160913.SID
│   ├── 20160927.SID
│   ├── 20161108.SID
│   ├── 20161213.SID
│   ├── 20170214.SID
│   ├── 20170314.SID
│   ├── 20170411.SID
│   ├── 20170613.SID
│   └── 20170808.SID
├── USECR04
│   ├── 20160913.SID
│   ├── 20160927.SID
│   ├── 20161011.SID
│   ├── 20161025.SID
│   ├── 20161108.SID
│   ├── 20161122.SID
│   ├── 20161213.SID
│   ├── 20161227.SID
│   ├── 20170110.SID
│   ├── 20170124.SID
│   ├── 20170214.SID
│   └── 20170228.SID
└── USECR06
    └── 20170821.SID
for d in */; do
    cd $d
    ls -t | tail -n+2 | xargs rm -f
    cd ..
done
├── TROF-9
│   └── 20170425.SID
├── USECR01
│   └── 20190114.SID
├── USECR03
│   └── 20170808.SID
├── USECR04
│   └── 20170228.SID
├── USECR05
│   └── 20170725.SID
└── USECR06
    └── 20170821.SID

TepakoT
() автор топика
Ответ на: комментарий от kostyarin_

tail конечно же. Перепутал. Одно и тоже. Только наоборот.

TepakoT
() автор топика
Ответ на: какие проблемы? от anonymous

какие проблемы?

Может быть такие что оно выводит все файлы?

./USECR03/20160913.SID
./USECR03/20160927.SID
./USECR03/20161108.SID
./USECR03/20161213.SID
./USECR03/20170214.SID
./USECR03/20170314.SID
./USECR03/20170411.SID
./USECR03/20170613.SID
./USECR03/20170808.SID
А это ls. И там и там девять.
20160913.SID  20160927.SID  20161108.SID  20161213.SID  20170214.SID  20170314.SID  20170411.SID  20170613.SID  20170808.SID
Я удалил все нужные мне файлы.

Нет конечно, всё уже готово, это была копия и я убрал -delete. Но! find даёт полное имя файла, обход каталогов не нужен. Хорошо.

TepakoT
() автор топика
Ответ на: комментарий от TepakoT

Может быть оно нашло самый новый из 1052-х файлов, но проверять я это конечно не буду. В каждом каталоге должен остаться один последний файл. Обход каталогов через for и ls -t | tail -n+2 | xargs rm -f (rm `ls -t | tail -n+2`) решает задачу.

TepakoT
() автор топика
Ответ на: комментарий от TepakoT

Ток ls -t | head -1 выводит 1 самый новый файл, если чё. Я думал ты догадаешься до конструкции уровня

for dn in */; do
  cd "${dn}"
  делаем чё-нибудь тут
  cd ..
done
anonymous
()
Ответ на: комментарий от anonymous

Я думал ты догадаешься

Я думал ты дочитаешь тред если не до пятого поста, в котором описаны результаты верного решения, то хотя бы до третьего, в котором это же решение и предлагается.

TepakoT
() автор топика
Ответ на: комментарий от TepakoT

Не знаю, там какая-то неревантная чушь. Ты весь бред в интернете читаешь?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.