UNIX Не в состоянии для файлов файлов - PullRequest
0 голосов
/ 07 марта 2019

У меня есть следующие файлы в одном каталоге.

ABC_2019-01-01.zip  
ABC_2019-01-02.zip  
ABC_2019-01-03.zip  
.  
.  
.  
ABC_2019-01-31.zip   
.  
.  
XYZ_2019-01-01.zip  
XYZ_2019-01-02.zip  
XYZ_2019-01-03.zip  
.  
.  
.  
XYZ_2019-01-31.zip  

предположим, что сегодняшняя дата - 2019-01-31, тогда я просто хочу сохранить сегодняшний ABC-файл, то есть ABC_2019-01-31.zip, сохранить все XYZфайл (независимо от даты) и удалите все файлы ABC, которые не содержат сегодняшнюю дату.

Вывод должен быть:

ABC_2019-01-31.zip   
.   
.   
XYZ_2019-01-01.zip   
XYZ_2019-01-02.zip   
XYZ_2019-01-03.zip   
.   
.   
.   
XYZ_2019-01-31.zip  

1 Ответ

0 голосов
/ 07 марта 2019

Если у вас есть $date заполнено:

date=$(date %+m-%d-%Y)

В bash вы можете использовать расширенные глобусы, чтобы исключить совпадения:

shopt -s extglob
rm ABC_!("$date").zip

Или в любой оболочке вы можете использовать find:

find dir/ -name 'ABC_*.zip' ! -name "ABC_$date.zip" -delete

Если -delete недоступен на вашей платформе, используйте:

find dir/ -name 'ABC_*.zip' ! -name "ABC_$date.zip" -exec rm {} \;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...