find 명령을 사용하여 ls와 유사한 출력을 얻는 방법

find 명령을 사용하여 ls와 유사한 출력을 얻는 방법

find 명령에서 비슷한 출력을 얻으 려고 합니다 ls(Linux Mind에서는 find (GNU findutils) 4.7.0.

내가 보고 싶어서 그러는 거야숫자 chmod 권한.

지금까지 내가 관리한 것은 다음과 같습니다.

% find . -maxdepth 1 -printf "%m %M %y %g %G %u %U %f %l\n"
755 drwxr-xr-x d blueray 1000 blueray 1000 . 
664 -rw-rw-r-- f blueray 1000 blueray 1000 .zshrc 
644 -rw-r--r-- f blueray 1000 blueray 1000 .gtkrc-xfce 
644 -rw-r--r-- f blueray 1000 blueray 1000 .sudo_as_admin_successful 
777 lrwxrwxrwx l root 0 root 0 resolv.conf /run/systemd/resolve/resolv.conf

여기서 %l파일이 심볼릭 링크가 아닌 경우 빈 문자열이 인쇄됩니다.

내가 찾고 있는 것은 %l비어 있지 않으면 인쇄하는 것입니다 -> %l.

어떻게 해야 합니까 -printf?

답변1

find연결된 항목 하나와 연결되지 않은 항목 하나를 인쇄하도록 지시할 수 있습니다 . 예를 들어:

$ find  . -maxdepth 1 \( -not -type l -printf "%m %M %y %g %G %u %U %f\n" \) -or \( -type l -printf "%m %M %y %g %G %u %U %f -> %l\n" \) 
755 drwxr-xr-x d terdon 1000 terdon 1000 .
644 -rw-r--r-- f terdon 1000 terdon 1000 file1
755 drwxr-xr-x d terdon 1000 terdon 1000 dir
644 -rw-r--r-- f terdon 1000 terdon 1000 file
777 lrwxrwxrwx l terdon 1000 terdon 1000 linkToFile -> file

또는 더 명확하게 말하자면:

find  . -maxdepth 1 \( -not -type l -printf "%m %M %y %g %G %u %U %f\n" \) \
                -or \( -type l -printf "%m %M %y %g %G %u %U %f -> %l\n" \) 

\( -not -type l -printf '' ... \)심볼릭 링크가 아닌 모든 것에 대해 실행 되고 -or \( -type l -printf '' ...\)심볼릭 링크에 대해서만 실행 됩니다 .

관련 정보