• ベストアンサー

コマンドライン処理に関しまして

ファイルを再起的に処理する場合、多くのコマンドのオプションとして $command -R といったものがありますが、特定のファイルないしディレクトリを除いて処理をしたい場合はどのような方法があるか教えていただけませんでしょうか。 以下に問題例を記載させていただきます。 /grandparent---/sample_d---file01           |        |-file02           |-/flog---file03           |     |-file04           |  (以下たくさんのファイル) という階層構造で、現在/grandparentのディレクトリにいる。 この状態で、flogを除いてすべてのディレクトリをgrand.aというアーカイブに入れる場合。 この問題を解く方法を是非教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • noocyte
  • ベストアンサー率58% (171/291)
回答No.3

#2 です. > どうやら UNIX 系 OS のようですので, と書きましたが,そもそもここは「Linux系OS」でしたね.(^^; カテゴリ見ずに書いちゃったもんで….

damedamekun
質問者

お礼

回答してくださり、ありがとうございます。 以前までは、全体をアーカイブに入れてから、不要なものを抽出して、圧縮するといった行為でごまかしてきたのですが、noocyteさんから教授していただいた事をきっかけに、スクリプトを書こうと思います。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • noocyte
  • ベストアンサー率58% (171/291)
回答No.2

まず,どうして *.a ファイルなんでしょうか? *.a ファイルにはディレクトリ階層を収めることはできないので, この場合は使用できません.(それに,ファイル名の長さにも制限があります.) ディレクトリ階層を収めるには *.tar ファイルと tar コマンドを使ってください. どうやら UNIX 系 OS のようですので,階層ディレクトリの処理をするための find コマンドが使用できます.特定のディレクトリやファイルを除外するには -prune オプションを使ってください. # アーカイブに入れるファイル名のリストを /tmp/files.txt に作成する. # パス名が /grandparent に対する相対パスになるようにする. cd /grandparent find . \( -path ./flog -prune -o -type f -print \) > /tmp/files.txt # /tmp/files.txt 内のファイルをすべてアーカイブ /tmp/grand.tar に格納する. # ↓この -T オプションは GNU 版の tar コマンドでないと使えないかもしれない. tar cvf /tmp/grand.tar -T /tmp/files.txt GNU find コマンドのマニュアル http://www.linux.or.jp/JM/html/GNU_findutils/man1/find.1.html GNU tar コマンドのマニュアル http://www.linux.or.jp/JM/html/GNU_tar/man1/tar.1.html GNU ar コマンドのマニュアル http://www.linux.or.jp/JM/html/GNU_binutils/man1/ar.1.html

全文を見る
すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

コマンド毎の問題なので、そのコマンドに別オプションがあればできる でしょうし、なければできません。 (ほとんどのコマンドにはそのような例外処理はついてないと 思いますが・・・) 基本的にはコマンドオプションでやらずに自分でシェルスクリプトを 書いて再起処理をすべきでしょう

damedamekun
質問者

お礼

回答してくださり、ありがとうございます。 参考になりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • UNIXのtarコマンドについて

    tarコマンドで以下の様に指定して、カレントディレクトリ配下のファイルのみをアーカイブしたいのですが、カレントディレクトリ自身の情報もアーカイブされてしまいます。ファイルのみをアーカイブすることは出来ないでしょうか?よろしくお願い致します。 tar cvf (tarファイル名) -C (ディレクトリ名) .

  • コマンドライン

    コマンドについてご質問です。 テスト問題集をやっていたのですが、わからないところがあったので教えてください。 1]カレントディレクトリを1つ上のディレクトリに変更するコマンドを示せ。 ただ単に答えは、cdですか。 2]カレントディレクトリにあるfile1を2つ上位のディレクトリへ移動するコマンドを示せ。 これもただ単に、cdですか お願いします。

  • Winのcmdコマンド入力補完の使い方

    Win7のcmdで 上級者は、ファイル移動などをする際に サクッとコマンドで行っているのを見かけます。 ダウンロードしたファイルのディレクトリとその移動先のディレクトリを 全て覚えている訳ではなく入力補完をつかっていると思いますが dir階層構造がうろ覚えでファイル名もうろ覚えの場合 *のワイルドカードで検索できるのでしょうか? 一つづつの階層をTABで候補を出しながら進めて行くのでしょうか? また入力を要領よく出来る方法やコツがあれば教えていただけませんでしょうか。

  • コマンドライン上でファイルを終了させる方法について

    コマンドライン上でアプリケーションを終了する方法についてお伺いします。 ファイル(エクセル、ワード等)を開く時、(たまに)以下の様にしてコマンドプロンプト上から開いています。 目的のファイルがあるディレクトリ\目的のファイル.xls(なり.docなり) が、その開いたファイルをバー右上の「×」で閉じるのではなく、開いた時と同じ様にコマンドライン上で閉じる場合にはどう命令するべきなのでしょうか? 或いはそういう処理は用意されていないのでしょうか? (試しに単純に「close 閉じたいファイル」と入力してみたら、(当然のように)エラーになりました。) 環境はWindowsXP SP1です。 調べれば分かりそうですが、なかなか見つかりませんでしたので、回答をお願いします。

  • 再度 コマンドライン

    2]カレントディレクトリにあるfile1を2つ上位のディレクトリへ移動するコマンドを示せ。 という問題の答えは、cd file1 ..¥..でいいでしょうか。

  • cpioコマンド

    cpioコマンドのオプションについて教えて下さい。 カレントディレクトリ以下を、/tmp/Backupとして保存。 ls | cpio -o > /tmp/Backup 作成したアーカイブに更にファイルを追加したい場合は どのようにすればよいのでしょうか? -A オプションを使用するようなのですが、どうしてもうまくいきません。 よろしくお願いします。

  • tarコマンドで

    ログインしたユーザーのホームディレクトリがカレントディレクトリで、 tar -cvf /dev/hda . というコマンドを実行した場合は、ユーザのホームディレクトリのすべてのファイルを新しくアーカイブしてhdaに書き出すという意味で良いのでしょうか?

  • コマンドラインでのis_dir、is_file

    コマンドライン上でPHPを走らせてフォルダ操作を色々やってたんですけど <?php echo 'ソ'; ?> で何故かエラーになることに気づきました。 再帰処理でディレクトリ構造を連想配列にいれてそこから色々なフォルダの条件検索をするプログラムを作っていなんですが、走らせると時々"is_dirにもis_fileにも引っかからないフォルダやファイル"というのが出てきてよく分からないなぁと思っていたら、どうやらファイルやフォルダ名に問題があるようでした いろいろみて気付いたのは"ソ"だけでしたが、ある特定の条件のフォルダ名やファイル名では挙動が不安定になることがわかりました。もちろんソが含まれていない物もたくさんあります。全体の5%ぐらいです これを解決する方法はありますか? コマンドプロンプトおよび実行ファイルの文字コードはShift_JISです

    • ベストアンサー
    • PHP
  • ディレクトリのパーミッションだけ一括変換するコマンドを教えてください。

    こんにちわ。 パーミションを変更するコマンドはchmodですが、あるディレクトリ下で、一般ファイルやサブディレクトリなどが入り混じっている場合に、一般ファイルのパーミションは変更せず、サブディレクトリ全て(さらにその階層のサブディレクトリすべて)を一発で755に変えるようなコマンドはありますでしょうか?つまりchmod -Rをディレクトリにだけ適用したいのですが。 逆に言えば、ディレクトリのパーミションは変更されず、一般ファイルだけパーミションを一斉に変更するという感じでも構わないのですが。 どなたかコマンドに詳しい方アドバイスの方よろしければお願いいたします。

  • ログアウト後のコマンド処理継続について

    コマンドを実行してログアウト後も処理継続させる方法をgoogle先生に聞くと nohupでコマンド実行、とでてきます。 しかし試していると、nohupでなく $ command & と、bg実行でもログアウト後に処理継続できているようでした。 ログアウト後処理継続は、bg実行でもよいのでしょうか? またnohupとの違いはなんでしょうか ご教授ください。 お願いします。