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 '' ...\)
심볼릭 링크에 대해서만 실행 됩니다 .