Объедините результаты нескольких команд Mac OS / Linux в одну строку - PullRequest
0 голосов
/ 19 января 2019

Я использую терминал Mac OS. Я хочу напечатать информацию о моих файлах в этом формате в некоторых каталогах:

md5 content|bytes size|modification date|file name

И для вывода этого списка файлов нужны 3 команды: find, stat и md5 (соответствующая команда linux md5sum)

Я пытался использовать эту команду:

find . ! -empty  -type f -exec sh -c "md5 -q '{}' && stat -f '|%z|%SB|%N' '{}'" \;

, который может выводить результат, как это, на самом деле это то, что я хочу:


31408eeb2c34d62638b810e7687d622d
269261 | 25 декабря 15:23:28 2018 | ./CQIE8846.JPG
4f47d55c974f554ec060bd9c2cd54959
54150 | 18 января, 17:20:08 2019 | ./Q_try.JPG

но я хочу, чтобы каждый файл отображался только в одной строке (2 найденных файла показывают только 2 строки):


31408eeb2c34d62638b810e7687d622d | 269261 | Дек 25 15:23:28 2018 | ./CQIE8846.JPG
4f47d55c974f554ec060bd9c2cd54959 | 54150 | 18 января 17:20:08 2019 | ./Q_try.JPG

Я пробовал другие командные строки:

кейс 1)

find . ! -empty  -type f -exec stat -f "`md5 -q {}`|%z|%SB|%N" {} \;

Но команда md5 не выполняется, вывод терминала выглядит следующим образом:

md5: {}: нет такого файла или каталога
| 269261 | 25 декабря 15:23:28 2018 | ./CQIE8846.JPG
| 54150 | 18 января, 17:20:08 2019 | ./Q_try.JPG

кейс 2)

find . ! -empty  -type f -exec stat -f '`md5 -q {}`|%z|%B|%N' {} \;

не в состоянии интерпретировать команды md5, вывод такой как

`md5 -q ./CQIE8846.JPG`|269261|1545722608|./CQIE8846.JPG
`md5 -q ./Q_try.JPG`|54150|1547803208|./Q_try.JPG

Есть ли способ достичь этого с помощью одной команды? Если нет, то как написать ожидаемый результат простым скриптом?

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