- 締切済み
Perlについて
あるテキストファイルからディレクトリだけを抜き出して各ディレクトリにパーミッションをつけたいのですがやりかたはシェルスクリプトでやろうとかんがえています。 #!/usr/bin/bash while read x1 x2 x3 x4 x5 x6 x7 x8 x9 ; do echo $x1 | grep ^d > /dev/null 2>&1 if(($?==0));then echo mkdir -p $x9 fi done < file.txt とディレクトリを作るところからパーミッションはどう書けばわかりません。当方初心者なのでわからないことがおおいです。 ご教授お願いします。 ~
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- qaz_qwerty_me
- ベストアンサー率19% (214/1115)
> file.txtにパーミッションがずらーと > drwxr-xr-x > drwxr-xr-x なっていて 上記のように特定の条件のパーミッションを変更する? という意味だと、UNIX環境なら find コマンドが最適です。 例えば・・・・ # find / -perm a+rw -exec chmod 777 {} \; 全ユーザーが読み込み・書き込み可能なファイルを 777 に変更する。 末尾の『¥;』は -exec を使う場合の決まり文句なのでオマジナイと思って下さい。 find で選択できない複雑なケースは ls, grep, awk(perl) などを組み合わせて chmod 777 (target 1) chmod 777 (target N) を作成し、前回のように | bash で処理
- qaz_qwerty_me
- ベストアンサー率19% (214/1115)
どのような用途で利用するのか不明ですが、パーミッション変更などの操作をPerlなどで記述すると、あとで何をどのように変更したのかが分からなくなって困ると思いますが・・・ 単純に下記のファイル(chmod.txt)を作成し、処理する方が作業内容が明確になって良いと思いますよ ^ ^ chmod.txtが煩雑で Perl等で作成するのはお勧めです。 ----chmod.txt-- chmod 777 /usr/local/xxx chmod 644 /usr/local/man chmod 400 /usr/local/shar ---- パーミションの変更操作 # cat chmod.txt | bash
お礼
さっそくの回答ありがとうございます!! file.txtにパーミッションがずらーと drwxr-xr-x drwxr-xr-x なっていてwhileなどを使ってシェルスクリプトできるのでしょうか?
お礼
回答ありがとうございます。大変お世話になりました。
補足
rwxr-wr-w rwxr-wr-- rwxr-wr-t の内容のテキストファイルのパーミッションの変更コマンドをシェルスクリプトで書くにはどうしたらいいのかわかりません。 おしえていただくとありがたいです。 最初の一文字づつを読み込んでchmod ???と数字がでるようにしたいのですが 実行結果 ./a.txt r w x r - w r - w chmod 755と実行結果がでるようにしたいです。