список файлов с ха sh, индексом и именем - PullRequest
0 голосов
/ 18 апреля 2020

Мне нужна команда, которая выводит список всех файлов в дереве каталогов. Столбцы должны быть: ха sh, индекс, имя файла.

Что-то вроде ls -iRAw2 и добавить столбец для ха sh.

У меня есть построить это решение, и результат почти то, что я хочу:

find testpath -type f -printf 'x%i %p\n' -exec sha1sum {} + \
|awk '{print $2,$1}' \
|sort \
|awk 'ORS=NR%2?" ":"\n"' \
|awk '{print $2,substr($4,2),$1}'

Единственная проблема заключается в том, что 'sort' obv. игнорирует пробелы и точки.

Печатный символ 'x' гарантирует, что сортировка всегда помещает строку ha sh перед строкой inode. Позже он удаляется с помощью subr.

Но мне не очень нравится решение. Это слишком сложно, не элегантно и использует awk. Я бы предпочел что-то, используя только внутренние bash команды.

Я искал решения для

'ls -i' and add a hash column somehow.
'find' as above and add a hash column.
'sha1sum' and add an inode column.

Но ничего не получилось. Что было бы более элегантным способом достижения желаемого результата?

1 Ответ

1 голос
/ 18 апреля 2020

Это более читаемая версия:

find testpath -type f -printf "%i " -exec sha1sum {} \; |\
while read -r inode sha1sum file; do
    echo "$sha1sum $inode $file"
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...