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
1つのリンクされたアイテムと1つのリンクされていないアイテムを印刷するように指示できます。たとえば、
$ 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 '' ...\)
シンボリックリンクに対してのみ実行されます。