2016-01-19 4 views
-1

У меня есть имена файлов в директории, как: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? Любая помощь с благодарностью

ответ

0

Я бы сделал что-то вроде этого .... чтобы начать с команды ls, когда вы получите то, что хотите удалить, а затем сделайте rm.

ls ACCT_{GDC,GA1}*-{09,10}.xml 

это перечислите GDC или GÀ1 файлы, которые заканчиваются на 09 или 10. Вы можете играть с комбинациями и различными значениями до тех пор, пока у вас есть правильный набор файлов, показывая, что вы хотите удалить. как только вы просто измените ls на rm, и вы должны быть золотыми.

С дополнительной информацией я мог бы помочь вам. Чтобы проверить это, я сделал:

touch ACCT_{GDC,GA1}_{01..10}_{05..10}.xml 

это сделает 56 различных файлов-заглушек с различными комбинациями. Создайте каталог, запустите эту команду и получите свои руки грязными. Это лучший способ изучить linux cli. Кроме того, 65% команд, которые вам нужны, вы узнаете, поймете, используйте, а затем никогда не будете использовать снова ... так что научитесь учиться тому, как использовать справочные страницы и настраивать место для игры.

+0

Я редактировал вопрос с помощью больше информации. В вашей команде мы ищем файлы, заканчивающиеся на 09 или 10. Но это не всегда так. – malai

+0

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

Смежные вопросы