Сохраните последние наборы файлов в каталоге для данного шаблона файла - PullRequest
0 голосов
/ 04 июня 2018

У меня есть несколько наборов файлов в папке ftp, и каждый набор содержит текст и файл маркера.Здесь мне нужно получить последний набор файлов с указанным ниже шаблоном файла из заданного каталога в зависимости от времени его поступления.

Формат файла:

<FileName>_<FileID>_<Date>_<TimeStamp>.csv
<FileName>_<FileID>_<Date>_<TimeStamp>.mrk

Файл1 имеет три набора, приходящихся в разное время:

file1_123_20180306_654321.csv
file1_123_20180306_654321.mrk

file1_123_20180306_866321.csv
file1_123_20180306_866321.mrk

file1_123_20180306_976321.csv
file1_123_20180306_976321.mrk

File2 имеет два набора, приходящиеся в разное время:

file2_456_20180306_277676.csv
file2_456_20180306_277676.mrk

file2_456_20180306_788988.csv
file2_456_20180306_788988.mrk

Если это один файл, я могу выполнить приведенную ниже команду, но в случае, если это набор Iнужна помощь.

ls -t *123*.mrk | head -1
ls -t *123*.csv | head -1

Мне нужно сохранить только последний набор файлов (из файла1 и файла2) и переместить другие файлы в другую папку.

Ожидаемый результат:

file1_123_20180306_976321.csv
file1_123_20180306_976321.mrk
file2_456_20180306_788988.csv
file2_456_20180306_788988.mrk

Как бы я это сделал, используя shell или python2.6?Буду признателен за любую оказанную помощь.Если более или менее точный ответ на этот вопрос уже существует, укажите это.

1 Ответ

0 голосов
/ 04 июня 2018

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

printf '%s\0' *_*_*_*.csv *_*_*_*.mrk |
awk -v RS='\0' -v ORS='\0' -F '[_.]' 'NF{a[$1,$2,$3,$NF]=$0}
   END{for (i in a) print a[i]}' |
xargs -0 -I {} echo mv '{}' /dest/dir

Вывод:

mv file2_456_20180306_788988.csv /dest/dir
mv file1_123_20180306_976321.mrk /dest/dir
mv file1_123_20180306_976321.csv /dest/dir
mv file2_456_20180306_788988.mrk /dest/dir

Если вы удовлетворены результатом, вы можете удалить команду echo перед mv, чтобы переместить эти файлы в каталог назначения.

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