이 쉘 명령을 어떻게 바꿀 수 있습니까?

이 쉘 명령을 어떻게 바꿀 수 있습니까?

findGID 목록을 바꾸려는 명령이 있습니다 .

이것은 명령입니다:

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얻기 위해 전화할 필요는 없습니다 . 이미 완료되었기 때문입니다. 다음과 같이 사용하십시오(output과 동일 ).statfindls -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

관련 정보