나는 다음과 같은 출력을 원합니다: name
size
및 hash
:
myfile.txt 222M 24f4ce42e0bc39ddf7b7e879a
mynewfile.txt 353M a274613df45a94c3c67fe646
오직 내가 가지고 있는 name
것은size
ll -h | awk '{print $9,$10,$11,$12,$5}'
그런데 각 파일을 어떻게 얻을 수 있나요 hash
? 나는 시도했다:
ll -h | awk '{print $9,$10,$11,$12,$5}' | md5sum
하지만 해시 값만 얻습니다.
답변1
ls를 구문 분석하면 안 됩니다., 대신 다음을 사용하세요.
for f in * .*; do
[ -f "$f" ] && \
printf "%s %s %s\n" "$f" $(du -h -- "$f" | cut -f1) $(md5sum -- "$f" | cut -d' ' -f1)
done
- 이
for
루프는 현재 디렉터리의 모든 파일과 디렉터리를 반복합니다.[ -f "$f" ]
일반 파일인지 확인하세요.printf "%s %s %s\n"
원하는 형식으로 매개변수를 인쇄합니다."$f"
첫 번째 매개변수는 파일 이름입니다.du -h -- "$f" | cut -f1
두 번째는 크기(사람이 읽을 수 있음)이지만 파일 이름은 아닙니다.cut
첫 번째 필드를 제외한 모든 항목을 제거합니다.md5sum -- "$f" | cut -d' ' -f1
세 번째는 MD5 합계이지만 파일 이름은 없습니다.