
我正在執行一個 find 命令來顯示特定擴展名的文件,例如:
find $directory -type f -name "*.vm"
但是我也希望能夠看到檔案權限(如 ls -l 顯示)。
如何才能做到這一點?
答案1
GNUfind
有一個-ls
可以使用的指令。它的輸出格式非常接近但不完全匹配ls -l
.
如果沒有給出,find 的預設操作是-print
簡單地列印找到的檔案名稱和路徑。如果新增(或替換-print
為),-ls
則會得到更詳細的清單。
如果您出於某種原因想要某種特定的格式,-printf
那就是您想要的。例如,試試這個:
find . -printf "%M %n %8.8u %8.8g %8.8s %Ax %AX %p\n"
大致複製ls -l
輸出格式。 (它使用不同的日期格式;也可以在那裡複製 ls 的行為;有關find
可用格式說明符的詳細信息以及printf(3)
有關數字用途的詳細信息,請參閱手冊頁。)
一般來說,您想要避免如果可以的話使用-exec
,如果必須使用 -exec,你想嘗試在一次呼叫中使用+
而不是給出多個文件名。{}
否則,該命令將針對每個找到的符合條件的檔案執行一次,對於大量檔案來說,這可能會帶來嚴重的效能損失。
另請注意,如果您不需要遞歸行為,最簡單的解決方案可能是首先使用 ls :ls -ld $directory/*.vm
答案2
您可以指定該-ls
選項find
。或者,如果您需要特定格式,請使用-exec
:
find "$directory" -type f -name '*.vm' -exec ls -l {} \;