我怎样才能替代这个shell命令?

con*_*fin 6 shell find files

我有一个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   
Run Code Online (Sandbox Code Playgroud)

如何find依次将文件中的每个条目替换到命令中,以便为每个条目创建单独的输出和错误文件?

Tho*_*hor 4

您不需要调用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'
Run Code Online (Sandbox Code Playgroud)

有关格式指令的更多信息,请参阅 GNU 查找手册的第 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
Run Code Online (Sandbox Code Playgroud)