Передача результатов awk в команду после канала - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь передать то, что будет awk выходами print $1 и print $2 на setfattr после канала. Значением расширенного атрибута является хеш-код MD5, который вычисляется из входных файлов на основе вывода команды find. Это то, что я до сих пор:

find /path/to/dir -type f \
  -regextype posix-extended \
  -not -iregex '.*\.(jpg|docx|psd|jpeg|png|html|bmp|gif|txt|pdf|mp3|bts|srt)' \
| parallel -j 64 md5sum | awk '{system("setfattr -n user.digest.md5 -v " $1 $2)}'

Имея awk '{print $1}' и $2 после того, как последний канал возвращает хэш и путь к файлу соответственно, просто отлично, я просто не уверен, как получить эти значенияв setfattr. setfattr просто генерирует общую ошибку использования при запуске этой команды. Это просто проблема с синтаксисом или я ошибаюсь?

1 Ответ

1 голос
/ 18 октября 2019

Попробуйте передать выходные данные параллельной команды в цикл while:

find /path/to/dir -type f \
    -regextype posix-extended \
    -not -iregex '.*\.(jpg|docx|psd|jpeg|png|html|bmp|gif|txt|pdf|mp3|bts|srt)' |
  parallel -j 64 md5sum |
  while read hash file; do
    setfattr -n user.digest.md5 -v ${hash} ${file}
  done
...