• 締切済み

grepで、権限等を引き継いだ形でファイル出力したい

mekanikの回答

  • mekanik
  • ベストアンサー率26% (4/15)
回答No.1

こんにちは。 solaris はあまり触ったことがありませんので、 一般的な unix の話ですが、、 私がやるとすれば、 元ファイルの stat 構造体を読み、 grep 後のファイルにその値を設定する、 というようなスクリプトを書きます。 シェルで、stat 構造体を読める方法を知りませんので、 perl で書くと思います。 perl で stat, chown, chmod, utime あたりの関数を駆使すれば、 できそうな気がします。

関連するQ&A

  • Solarisでのgrepについて

    Solarisのgrepには、前後の行を表示するオプションがないと 思います。 GNUのgrepを使用できない(構成を変更できない)環境ですが、 Linuxのgrepでいう[-A]や[-B]オプションを使用したシェルが 必要になり困っています。 できれば、下記のgrepのように|(パイプ)で挟んで使用している 状態にしたいのですが、コマンドやオプションを教えていただけ ませんか? ***|grep -B1 ***|*** シェルを早急に作成する必要がありますが、知識が乏しく 大変困っています。 よろしくお願いいたします。

  • cpコマンドとオーナー・グループについて

    cpコマンドについて質問です。 通cpコマンドで-pオプションを指定すると、オーナー・グループ パーミッション・タイムスタンプが保持されるはずですが、 オーナー・グループがcpコマンド実行オーナーに変更されて しまいます。 オーナー:AAA グループ:BBBというファイルtest.txtという ファイルを オーナー:CCC グループ:DDDというユーザーで下記コマンドを 実行すると、 cp -p test.txt test.txt.bkup test.txt.bkupがオーナー:CCC グループ:DDDになってしまいます。 なぜこのようなことになるのか、オーナーグループを保持するには どうすればいいのかご存知でしたら教えてください。 よろしくお願いします。

  • solaris8で曜日を出力する方法

    solaris8で 曜日を簡単に出力するコマンドや方法はありませんでしょうか? Solarisのdateコマンドだと曜日を出力させるオプションが なさそうです。 cronで毎日実行する処理があるのですが、土曜日だけは更に 別の処理を行おうと思ってまして。 簡潔な方法が思いつきません。 すみませんがよろしくお願い致します。

  • linuxのgrepコマンドに関して

    linuxのgrepコマンドに関して ファイルの中から、1や2という文字が単独で存在する行を検索したくて grep 1 file名 とするのですが、そうすると11や23など文字が単独ではなく、含まれている行が出力されます。 含まれる、ではなく文字そのものを検索するにはどうしたらよいでしょうか?

  • SJISファイルを日本語でgrep

    UNIX環境で、 SJISファイルを日本語でgrepしたのですが、 ファイル名が出力されずにうまくいきません。 どなたかご教授願えないでしょうか。 [自分のコマンド] find ./ -type f -print | xargs nkf -e | grep 'テスト' とし、日本語は検地できたのですが、 ファイル名が出力されずに困っております。 grep -l としたら、↓のエラーが表示されました。 xargs: nkf: シグナル 13 によって終了しました サブディレクトリも含めて検地したいのですが、 なにかいい方法ありますでしょうか。

  • OSによるcpコマンドの動作違いに関して(特にリンクファイルのコピー)

    cpコマンドでシンボリックリンクファイルをコピーする際にlinux版のcpではリンクのままコピーされますが、solaris版ではハードコピーされてしまいます。 リンクをリンクのままとしてコピーするにはtarを使うなど他の方法も考えられますが、出来ればコピーコマンドのオプションによって簡単に出来たら楽と思っています。 どのようにしたらよいのでしょうか? <cpのバージョンを使い分ける、オプションを与える等々> また、linux版でも「あるファイルのリンクのリンク」をコピーすると元ファイルまで辿って新しいリンクファイルが作成される様です。これを直接コマンドラインで指定したファイルのリンクとしたい場合どのようなオプションを与えるのが良いのでしょうか? 細かな内容で申し訳在りませんが、宜しくお願いいたします。 ------ [linux(Redhat8)版cp]  touch file; ln -s file linked_file cp -R linked_file aaa ※ aaa はfileのシンボリックリンクになる /bin/cp --version cp (fileutils) 4.1.9 著者 Torbjorn Granlund, David MacKenzie, and Jim Meyering. Copyright (C) 2002 Free Software Foundation, Inc. [solaris(sunos5.8)版cp] ※ 上と同じコマンド実行でcpは実ファイルになる /mp/suel/tool/bin/cp --version cp (GNU fileutils) 4.0

  • 検索して出た結果ファイル一覧の権限を一括変更

    1.ファイルを検索します。(カレントディレクトリに、BBB.sh とCCC.shを保存しております。) 2.検索されたファイルに対して一括でchmodを行いたいのです。 このBBB.shと、CCC.shの権限を666に コマンドだけで実行できないでしょうか? ・考えてみたコマンド ls -l | grep -e [BC] | chmod 655 →エラーになります。 多分、chmod 655の後ろに、ファイルが来ないためエラーになっていると思うのです。 ご教授お願いします。

  • grep,sedコマンドについて

    昨日に引き続き、またまた質問です。 昨日回答してくださった方、ありがとうございました。 その後自分でも色々勉強しまして、ファイルの中身を処理するにはgrepコマンドとsedコマンドが 有効である事が分かりました。 今回やりたいことは以下のファイルの数字と時間の部分(//のついている2行)の削除です //1 //00:00:03,600 --> 00:00:07,195 xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx //2 //00:00:07,360 --> 00:00:09,635 xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx     ・     ・ (実際のファイルには"//"はついていません) 理想の出力 xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx (xxxxxの部分には英語の台詞が入ります) で、以下が自分が考えた方法です 1.sedコマンドのみで削除 $ sed "/[0-9]*\n[0-9][0-9].*/d" ファイル名 結果 ファイルの内容がすべて表示されるだけ (a) 2.grepコマンドで抽出しパイプ処理 まずgrepで削除部分を抽出 $ grep -P "^[0-9]*\n[0-9][0-9].*" ファイル名 結果 1    00:00:03,600 --> 00:00:07,195    2    00:00:07,360 --> 00:00:09,635         ・         ・    10    11         ・         ・ となり、1~9までの数字と時間はちゃんと表示され 10以降は数字しか出ません。 (b) また -P の部分を -E にすると、何も表示されません (c) (perlの正規表現と拡張正規表現の違いはここでは無いように思えますが・・・) 2は最初でつまづいたのでどのコマンドに渡して行を削除するかはまだ分かりません (d) 削除の際、2行まとめて行うのは、一行ずつ行うと、台詞の部分に数字のみが入っていた場合 削除されるのを防ぐためです 以上長くなりましたが(a)~(d)の質問、疑問に回答していただけると嬉しいです。 よろしくお願いします。

  • 別ユーザでのコマンド実行(root権限)のやり方を教えて下さい

    現在、Solaris9でroot権限のコマンドを実行したいのですが、いちいちroot権限になってからコマンドを実行するのが面倒です。 ex) aaaユーザでrebootを実行したい。 出来るならaaaユーザにはスーパーユーザのパスワードを教えたくない 一応、「sudo」というコマンドを使用すれば出来ると分かったのですが、現在の環境ではsudoコマンドはありませんでした。 別の方法で出来るかどうか教えて頂けないでしょうか。 すみませんが、回答よろしくお願いします。 環境: OS:Solaris9

  • WindowsXPでgrepして置換えがしたい。

    OS:Windows XP dosコマンドなどで、grepして置き換えがしたいです。 dirA | +dirA1 || |+dirA11 ||| ||+file1.text || |+file1.text || |+file3.text | +dirA2  |  +file1.text  |  +file2.text dirA以下のfile1.textに対し、文字列"abc"を"def"に置き換える。 と dirA以下の*.textに対し、文字列"あああ"を"いいい"に置き換える。 を1アクションでやりたいです。 第一希望  dosコマンド(バッチファイル)など最初からXPに入っているもので出来るのがベストです。 第二希望  秀丸エディタにgrepして置換の機能がありますが、これをどうにか登録して使う方法があればそれでも可。 第三希望  何かしらフリーのソフトをダウンロードして実現する。 以上、よろしくお願いします。