검색문 결합

검색문 결합

다음 두 명령을 어떻게 결합할 수 있나요? 소유자와 파일 크기가 포함된 파일을 얻고 싶습니다.

find /test -type f -size +$(df -k /test| awk 'NR == 3 { printf "%d", 
$1/4 }') -exec du -sh {} +


find /test -type f -size +$(df -k /test | awk 'NR == 3 { printf "%d", 
$1/4 }') -exec stat -c '%U' {} +

답변1

두 가지 가능한 옵션이 있습니다. find이를 결합하는 다양한 방법에 초점을 맞추기 위해 대부분의 설명을 제거했습니다.

  1. 명령문을 find"find-shell"로 결합합니다.

    find ... -exec sh -c 'printf "%s - %s - %s\n" "$1" "$(stat -c %U "$1")" "$(du -sh "$1")"' find-sh {} \;
    

그러면 파일이 한 번에 하나씩 쉘 명령으로 전달되며, 이는 명령 stat과 단일 형식 명령문으로 결합됩니다. 두 번째 옵션은 한 번에 여러 파일을 명령에 전달합니다.duprintfstat

  1. 기능을 다음과 비교하십시오 stat.

    find ... -exec stat -c '%n %U %s' {} +
    

stat옵션은 크기를 바이트 단위로 인쇄하며 du -h형식과 약간 다릅니다.


사용 가능한 GNU 확장이 있는 경우 세 번째 옵션이 있습니다 -printf.

find ... -printf '%p %u %s\n'

관련 정보