• 締切済み

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 とディレクトリを作るところからパーミッションはどう書けばわかりません。当方初心者なのでわからないことがおおいです。 ご教授お願いします。 ~

みんなの回答

回答No.2

> 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 で処理

rurinko
質問者

お礼

回答ありがとうございます。大変お世話になりました。

rurinko
質問者

補足

rwxr-wr-w rwxr-wr-- rwxr-wr-t の内容のテキストファイルのパーミッションの変更コマンドをシェルスクリプトで書くにはどうしたらいいのかわかりません。 おしえていただくとありがたいです。 最初の一文字づつを読み込んでchmod ???と数字がでるようにしたいのですが 実行結果 ./a.txt r w x r - w r - w chmod 755と実行結果がでるようにしたいです。

回答No.1

 どのような用途で利用するのか不明ですが、パーミッション変更などの操作を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

rurinko
質問者

お礼

さっそくの回答ありがとうございます!! file.txtにパーミッションがずらーと  drwxr-xr-x drwxr-xr-x なっていてwhileなどを使ってシェルスクリプトできるのでしょうか?

関連するQ&A

専門家に質問してみよう