Добавьте md5sum в вывод ls bash - PullRequest
4 голосов
/ 29 июля 2011

Я пытаюсь найти файлы и добавить их md5sum в таблицу.

find /store/01 -name "*.fits" -exec chmod -x+r {} \; -exec ls -l {} \; | tee ALL_FILES.LOG

Как добавить в вывод ls -l сумму md5 файла?

Я бы хотел, чтобы он вывел ls -l и дополнительный столбец результата md5sum

Например:

-rw-r--r-- 1 data user 221790 Jul 28 15:01 381dc9fc26082828ddbb46a5b8b55c03 myfile.fits 

Ответы [ 3 ]

6 голосов
/ 29 июля 2011

Этот вкладыш будет делать то, что вы хотите (отредактируйте поиск в соответствии с вашими потребностями, добавив /store/01 -name "*.fits" -exec chmod -x+r {} \; вместо . -type f в моем примере):

$ find . -type f -exec sh -c 'printf "%s %s \n" "$(ls -l $1)" "$(md5sum $1)"' '' '{}' '{}' \;

Пример:

/etc/samba$ find . -type f -exec sh -c 'printf "%s %s \n" "$(ls -l $1)" "$(md5sum  $1)"' '' '{}' '{}' \; 
-rw-r--r-- 1 root root 8 2010-03-09 02:03 ./gdbcommands 898c523d1c11feeac45538a65d00c838  ./gdbcommands 
-rw-r--r-- 1 root root 12464 2011-05-20 11:28 ./smb.conf 81ec21c32bb100e0855b96b0944d7b51  ./smb.conf 
-rw-r--r-- 1 root root 0 2011-06-27 10:57 ./dhcp.conf d41d8cd98f00b204e9800998ecf8427e  ./dhcp.conf 

Чтобы получить желаемый результат, вы можете удалить поле $ 8 следующим образом:

/etc/samba$ find . -type f -exec sh -c 'printf "%s %s \n" "$(ls -l $1)" "$(md5sum  $1)"' '' '{}' '{}' \; | awk '{$8=""; print $0}'
-rw-r--r-- 1 root root 8 2010-03-09 02:03  898c523d1c11feeac45538a65d00c838 ./gdbcommands
-rw-r--r-- 1 root root 12464 2011-05-20 11:28  81ec21c32bb100e0855b96b0944d7b51 ./smb.conf
-rw-r--r-- 1 root root 0 2011-06-27 10:57  d41d8cd98f00b204e9800998ecf8427e ./dhcp.conf

HTH

3 голосов
/ 29 июля 2011

это будет работать:

find /store/01 -name "*.fits" -exec chmod -x+r {} \; \
   | awk '{
line=$0;
cmd="md5sum " $9;
cmd|getline;
close(cmd);
print line, $1;
}' > ALL_FILES.LOG
0 голосов
/ 29 июля 2011

Как насчет этого?

find /store/01 -name "*.fits" -exec chmod -x+r {} \; \
   |  xargs -i md5sum {} > ALL_FILES.LOG

ls испортил его и не нужен.

Редактировать Если вы "действительно" хотите этого ls

for file in `find /store/01 -name "*.fits"`; do
   chmod -x+r $file; 
   echo -n `ls -l $file` " " ; 
   echo ` md5sum $file | cut -d " " -f 1`; 
done

HTH

Стив

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