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

find1つのリンクされたアイテムと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 '' ...\)シンボリックリンクに対してのみ実行されます。

おすすめ記事