我有一个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
以便为每个条目创建单独的输出和错误文件?
答案1
您不需要调用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 查找手册的第 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
答案2
for 语句怎么样?就像是:
for f in `cat file_with_entries`; do
find -follow \( -group $f -o -acl_group $f \) -exec ls -ln {} \; 2> $HOME/error.$f.log 1> $HOME/results.$f.log
done