UNIX, как анализировать список файлов в каталоге более одного раза - PullRequest
0 голосов
/ 16 мая 2019

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

Мои команды ls /archive/gtx_rec_full | grep '2019-05-1' | awk '{print $5,$6,$7,$8}' | more

, которые возвращают список вроде

9636502 2019-05-10 00: 40 /archive/gtx_rec_full/GTX_20190608_1967_40431_236965.dat.gz 15915297 2019-05-10 1:39 /archive/gtx_rec_full/GTX_20190608_1967_40432_382768.dat.gz 10672671 2019-05-10 1:39 /archive/gtx_rec_full/GTX_20190608_1967_40433_261926.dat.gz17362746 2019-05-10 02:41 /archive/gtx_rec_full/GTX_20190608_1967_40434_418702.dat.gz 13355381 2019-05-10 03:40 /archive/gtx_rec_full/GTX_20190608_1967_40435_323201. * 101 * 1010сохраните размеры файлов и временные метки, а затем отрежьте уникальные идентификаторы файлов, такие как 40431, 40432, 40433 и т. д. Итак, мой новый набор результатов будет выглядеть так:

9636502  05/10/2019 00:40   /archive/gtx_rec_full/40431
15915297 05/10/2019 01:39   /archive/gtx_rec_full/40432
10672671 05/10/2019 01:39   /archive/gtx_rec_full/40433
17362746 05/10/2019 02:41   /archive/gtx_rec_full/40434
13355381 05/10/2019 03:40   /archive/gtx_rec_full/40435

Мне не яснокак это сделатьКто-нибудь может предложить несколько предложений?Спасибо!

Я работаю на Red Hat Enterprise Linux Server, 7.5

Ответы [ 2 ]

1 голос
/ 18 мая 2019

Как я понял из вашего комментария, вы хотели

| sed -r 's/GTX.*_(.*)_[^_]*/\1/;s/\// /g'

(или, если вас смущают косые черты)

| sed -r 's#GTX.*_(.*)_[^_]*#\1#;s#/# #g'

Если найденное вами решение отличается, пожалуйста, опубликуйте его и примите собственный ответ.
Тогда все видят, что вопрос «закончен».

0 голосов
/ 16 мая 2019

попробуйте это:

#!/bin/bash
while IFS= read -r -d '' line; do
   id=$(awk -F_ '{ print $4 }' <<< "${line##*/}")
   path=$(awk '{ print $4 }' <<< "${line%/*}")
   newpath="$path/$id"
   echo "${newpath//\/*/}"
done < <(find /archive/gtx_rec_full -type f -name 'GTX_*' -printf "%-10s %Am/%Ad/%AY %AH:%AM   %p\n" -print0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...