У меня есть несколько файлов, которые следуют этому синтаксису:

  • _yyyy мм dd_hhhmmm.

Пример:

  • _2010-01-01_00h10m.
  • _2010-01-01_01h10m.
  • _2010-01-01_02h10m.
  • _2010-01-01_03h10m.
  • ...
  • _2010-01-01_23h10m.
  • _2010-02-01_00h10m.
  • _2010-02-01_01h10m.
  • _2010-02-01_02h10m.
  • ...
  • _2010-02-01_23h10m.
  • ...
  • _2010-12-01_23h10m.

Я хотел бы сохранить только эти файлы

  • _2010-01-01_00h10m.
  • _2010-02-01_00h10m.
  • _2010-03-01_00h10m.
  • ...
  • _2010-12-01_00h10m.

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

У кого-нибудь есть умный on-liner для этого вызова?

Спасибо удо

2 ответа2

2

В Баш:

shopt -s extglob
rm !(*_2010-??-01_00h10m.*)
1

очень наивный способ

mkdir keep_these
mkdir remove_these
mv *_00h10m* keep_these
mv *.* remove_these

или вкладыш

ls * | grep -v "_00h10m" | while read a; do mv $a /tmp; done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .