У меня есть имена файлов в директории, как:Unix удалить старые файлы, основанные на дате от имени файла
ACCT_GA12345_2015-01-10.xml
ACCT_GA12345_2015-01-09.xml
ACCT_GDC789g_2015-01-09.xml
ACCT_GDC567g_2015-01-09.xml
ACCT_GDC567g_2015-01-08.xml
ACCT_GCC7894_2015-01-01.xml
ACCT_GCC7894_2015-01-02.xml
ACCT_GAC7884_2015-02-01.xml
ACCT_GAC7884_2015-01-01.xml
Я хочу иметь только последний файл в папке. Последний файл можно найти, используя только имя файла (NOT штамп даты). Например, у ACCT 12345 есть файлы с 1/10 & 1/09. Мне нужно удалить файл 1/09 и иметь только 1/10 файл, для ACCT 789g есть только один файл, поэтому я должен иметь этот файл, а ACCT 567g - последний файл 1/09, поэтому мне нужно удалить 1/08 и имеют 1/09. Таким образом, комбинация для последнего файла должна быть ACCT & Максимальная дата для этого ACCT.
я должен был бы окончательный список файлов, как:
ACCT_GA12345_2015-01-10.xml
ACCT_GDC789g_2015-01-09.xml
ACCT_GDC567g_2015-01-09.xml
ACCT_GCC7894_2015-01-02.xml
ACCT_GAC7884_2015-02-01.xml
Может кто-нибудь помочь мне с этой командой в UNIX? Любая помощь с благодарностью
Я редактировал вопрос с помощью больше информации. В вашей команде мы ищем файлы, заканчивающиеся на 09 или 10. Но это не всегда так. – malai
ACCT _ (\ D {1,3} \ d {1,5} [g] {0,1}) _ [\ d] {4} - ([\ d] {2}) - ([\ d] {2}). Xml Это строка регулярных выражений, которая разбивает ваши имена файлов на $ 1 $ 2 $ 3, где $ 1 - GAC7884 или что-то еще, $ 2 - месяц $ 3 - день. Посмотрите на использование Regex в файле сценария оболочки. Вы можете это сделать Google. Я хотел бы написать все это для вас, но у меня есть свои собственные программы. Я отвечу и задаю вам вопросы по пути. По существу, вы хотите использовать это регулярное выражение для каждого имени файла, создайте список всего, кроме самого последнего, а затем удалите. не удаляйте, пока ваш 100% уверен, хотя, или если у вас нет резервной копии. Удачи! – MichaelWClark