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