linux:如何顯示檔案的權限(如 ls -l)對 find 指令傳回的檔案執行的操作

linux:如何顯示檔案的權限(如 ls -l)對 find 指令傳回的檔案執行的操作

我正在執行一個 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 {} \;

相關內容