Shell
如何替換這個 shell 命令?
我有一個
find
命令,我想將 GID 列表替換為該命令。這是命令:
find / -follow \( -group 39 -o -acl_group 39 \) -exec ls -ln {} \; 2> $HOME/error.39.log 1> $HOME/results.39.log
我還有一個包含內容的文件:
3 100005 21 7
如何將文件中的每個條目
find
依次替換到命令中,以便為每個條目創建單獨的輸出和錯誤文件?
您無需呼叫
ls
即可獲取stat
資訊,find
已經這樣做了。改用這樣的東西(與輸出相同ls -ln
):find -follow \( -group 39 -o -acl_group 39 \) -printf '%M %n %U %G %s %Cb %Cd %CH:%CM %p\n'
有關格式指令的更多資訊,請參見 GNU find 手冊的第 3.2.2 節。
編輯
要將其應用於文件中的多個組 ID:
while read; do find -follow \( -group $REPLY -o -acl_group $REPLY \) \ -printf '%M %n %U %G %s %Cb %Cd %CH:%CM %p\n' \ 1> $HOME/results.$REPLY.log \ 2> $HOME/error.$REPLY.log done < group_id_file