Command-Line
如何使用 find 命令獲取類似輸出的 ls
我正在嘗試
ls
從 find 命令獲得類似的輸出(這是在 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
不為空,則 print-> %l
。我該怎麼做
-printf
?
您可以告訴
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 '' ...\)
只對符號連結執行。