CSV形式で書かれているファイルにファイルPATH、オーナー、グループ、権限を書いておき、それを読みだしてワンライナーでchmod、chownを実行する方法を探していたが、とりあえず以下のようにすれば実現できることがわかった。
なお、ファイルの中身は以下のように書かれているとする。
[root@test-centos7 ~]# cat /root/test.lst
755,test,test,/work/aaaaa.txt
777,test,test,/work/aaaaa.txt.bk
666,test,test,/work/aaaaa2.txt
555,test,test,/work/aaaaa2.txt.bk
755,test,test,/work/aaaaa3.txt
775,test,test,/work/aaaaa3.txt.bk
1.chmodを実行する
CSVファイルの内容を元にchmodを実行する場合は、以下のようにコマンドを実行する。
awk -F, '{ print $1" " $4 }' /root/test.lst | xargs -t -n 1 -d'\n' -I{} sh -c 'eval chmod {}'
[root@test-centos7 ~]# awk -F, '{ print $1" " $4 }' /root/test.lst | xargs -t -n 1 -d'\n' -I{} sh -c 'eval chmod {}'
sh -c eval chmod 755 /work/aaaaa.txt
sh -c eval chmod 777 /work/aaaaa.txt.bk
sh -c eval chmod 666 /work/aaaaa2.txt
sh -c eval chmod 555 /work/aaaaa2.txt.bk
sh -c eval chmod 755 /work/aaaaa3.txt
sh -c eval chmod 775 /work/aaaaa3.txt.bk
[root@test-centos7 ~]# ls -la /work/aaaaa*
-rwxr-xr-x. 1 test test 0 6月 6 12:14 /work/aaaaa.txt
-rwxrwxrwx. 1 test test 0 7月 26 11:28 /work/aaaaa.txt.bk
-rw-rw-rw-. 1 test test 0 7月 12 08:35 /work/aaaaa2.txt
-r-xr-xr-x. 1 test test 0 7月 26 11:28 /work/aaaaa2.txt.bk
-rwxr-xr-x. 1 test test 0 7月 11 19:31 /work/aaaaa3.txt
-rwxrwxr-x. 1 test test 0 7月 26 11:28 /work/aaaaa3.txt.bk
2.chownを実行する
同じく、CSVファイルの情報を元にchownを実行する場合は、以下のようにコマンドを実行する。
awk -F, '{ print $2":"$3" " $4 }' /root/test.lst | xargs -t -n 1 -d'\n' -I{} sh -c 'eval chown {}'
[root@test-centos7 ~]# awk -F, '{ print $2":"$3" " $4 }' /root/test.lst | xargs -t -n 1 -d'\n' -I{} sh -c 'eval chown {}'
sh -c eval chown test:test /work/aaaaa.txt
sh -c eval chown test:test /work/aaaaa.txt.bk
sh -c eval chown root:root /work/aaaaa2.txt
sh -c eval chown apache:apache /work/aaaaa2.txt.bk
sh -c eval chown test:test /work/aaaaa3.txt
sh -c eval chown test:test /work/aaaaa3.txt.bk
[root@test-centos7 ~]# ls -la /work/aaaaa*
-rwxr-xr-x. 1 test test 0 6月 6 12:14 /work/aaaaa.txt
-rwxrwxrwx. 1 test test 0 7月 26 11:28 /work/aaaaa.txt.bk
-rw-rw-rw-. 1 root root 0 7月 12 08:35 /work/aaaaa2.txt
-r-xr-xr-x. 1 apache apache 0 7月 26 11:28 /work/aaaaa2.txt.bk
-rwxr-xr-x. 1 test test 0 7月 11 19:31 /work/aaaaa3.txt
-rwxrwxr-x. 1 test test 0 7月 26 11:28 /work/aaaaa3.txt.bk
awkだけでも実現できそうな気もするけど…
とりあえず、当座はこれでいいかなぁ。