• ベストアンサー

特定の「文字列を含まない」正規表現

tarコマンドでファイルのアーカイブを作成しようとしています。 特定のディレクトリは対象外としたいのですが、正規表現の記述がわかりません。 ご教授いただきたくお願いいたします。 具体的には、、 --- ディレクトリ「abc」配下にあるファイルをアーカイブする場合、 tar cvf /tmp/xxxx.tar abc などと記述しますが、abc配下にある「statistics」といディレクトリはアーカイブ対象外とし、statistics以外をアーカイブしたいのですが、方法がわかりません。 シェルは bashです。 どなたかご存じの方、よろしくお願いいたします。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.1

正規表現とは全く関係ないですよね?? tar cvf /tmp/xxxx.tar --exclude statistics abc 下の方にもstatisticsがあってそれを除外して困るなら、 tar cvf /tmp/xxxx.tar --exclude ./abc/statistics ./abc とか。

OKWave1130
質問者

お礼

excludeオプションがあったんですね! 勉強不足でした。。 ありがとうございました!!

関連するQ&A

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

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

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

    Linuxのtarコマンドについてわかる方がいれば教えてほしいです。 (tarコマンドというよりはLinuxの仕様かもしれません) Linuxで以下①パターンと②パターンでコマンドを実行したときに 指定の仕方でtarファイルの作成されるディレクトリが違うのですが なぜでしょうか。 Linux初心者なので詳しく教えていただけると助かります。 共通(前準備 (#はプロンプトです)) # DIR=/tmp/hoge/2021 # ls -l ${DIR} ~ test1.txt ~ test2.txt ~ test3.txt # cd ${DIR} ①パターン # tar -cvf ${DIR}.tar ./* (アスタリスクです) # ls -l /tmp/hoge ~ 2021.tar ⇒/tmp/hoge配下にtarができる ②パターン # tar -cvf 2021.tar ./* (アスタリスクです) # ls -l /tmp/hoge ~ 2021.tar ⇒/tmp/hoge/2021配下にtarができる

  • tarでディレクトリのみをアーカイブしたい

    【質問】 Solaris8 純正のtarコマンドで、ファイルを除いてディレクトリのみをアーカイブする良い方法を模索しています。 【背景】 ディレクトリ構成をtarで抽出し、別のマシンで解凍する(/export/homeなど)際に、配下のファイルサイズが大きく時間がかかるため、抽出の際にファイルを除外しておきたい 【前提】 tarでアーカイブする際、ディレクトリを指定すると配下のファイルも再帰的にアーカイブされてしまう。 【詳細】 例えば、以下のようなディレクトリ構造のとき、 AAA/ AAA/aaa/ AAA/aaa/hoge.c BBB/ BBB/foo.txt ディレクトリのみをtarアーカイブして、 AAA/ AAA/aaa/ BBB/ という内容のtarアーカイブを作成するとき、私は以下のようなやり方をしています。 A.全抽出→解凍→ファイル消し→再抽出 # tar cf - AAA BBB | (cd /tmp/work; tar xvf -) # cd /tmp/work # find . -type f -exec rm {} \; # tar cvf /dev/rmt/0 AAA BBB B.除外リスト作成→除外リスト指定で抽出 # find AAA BBB -type f > exclude-list # tar cvfX /dev/rmt/0 exclude-list AAA BBB どちらも結果的にはディレクトリのみ抽出できるので問題はないのですが、ちょっと手間がかかります。コマンドライン1行でできる良い方法があれば教えて下さい。 # そもそも【前提】が私の思い込みかもしれないので、 # 「違うよ」という指摘があればお願いします。

  • tarと compressと  remshの組み合わせ

    HP-UXを使用しています。 tar と compress とremshを組み合わせて、 あるディレクトリ配下のファイルを、バックアップし、圧縮し、さらに別サーバに転送したいのです。 例えば、あるディレクトリを /etc/tmpとし、別サーバのIPアドレスをxxx.xxx.xxx.xxxとし、 別サーバの保存領域が/tmpとし、圧縮したバックアップファイル名をdummy.tar.Zとします。 このとき、 下のように打っても、tarのエラーがでます。 具体的には etc/tmp配下にファイルがたくさんあるのにもかかわらずファイルが見つかりませんのようなエラーがでました。 (...のようなというのは、今、家にいるため会社で昼間見たエラーメッセージを覚えていないのです) うってみた内容    tar cvf -etc/tmp | compress -c | remsh xxx.xxx.xxx.xxx dd of=/tmp/dummy.tar.Z  構文が違うのかと思い、いろいろ順序を入れ替え、やってみましたが駄目でした。 しかし、tarとcompressとremshを組み合わせ、対象ファイルをバックアップし、圧縮し、さらに別サーバに転送できると聞いたことがあるのです。(メリットは最初のサーバに大きな容量のバックアップファイルを残さないですむこと)  今日、三時間ほど試しましたが、できませんでした。  もし、皆さんの中でやられた方がいらっしゃいましたら教えてください。

  • シェルを自動起動したい

    現在、solaris系のシェルを組んでいます。サーバのあるディレクトリのデータを、ある時間がきたら自動的に指定のディレクトリにバックアップするようにしたいのですが、たとえば簡単に、圧縮コマンドの tar -cvf ***.tar /back/**** のほかに、時間指定のコマンドを、どう記述すればいいのでしょうか?それとも他のシェルが必要になるのでしょうか??

  • ある特定のディレクトリの特定の文字を含むファイルを検索するには

    Debian Linuxでbashスクリプトを記述しています。 特定のディレクトリ(1つの階層)にある ".abc"で始まる隠しファイルの一覧と、 それぞれのファイル内容を取得したいのですが ・サブディレクトリも検索してしまう。  find の-pruneやmaxdepthがききません。 lsで記述しなおしましたが ・結果を確認すると、6回同じ内容を記述しています。  正規表現が正しくないと思い書きなおしていますがうまくいきません。 target=/var/test filename=$(ls -a ${target} -name | grep '\.abc' | grep -v "~") kugirimoji="------" for i in $filename ; do echo $i cat $i echo $kugirimoji done どこを直せば、単一ディレクトリの特定ファイルの一覧を検索できるでしょうか。 同じ内容を複数回吐き出すのは、やはり正規表現が間違っているからでしょうか。 ぜひ教えて下さい。 どうぞよろしくお願い致します。

  • ファイル全てのある文字列を変更したい

    Redhat7.1Jを使ってます。 あるディレクトリ配下に属するファイル(サブディレクトリの下のファイルも)全てを対象に 「abc」等の文字列を全て「xyz」等に変換しようとしています。 どのような方法がいいかご指導願います。 ファイル総数は10,000個を越えます。 サブディレクトリも数百あります。

  • (秀丸)正規表現で、特定文字列含む<~>範囲を選択

    お世話になります。 (秀丸の)正規表現について教えてください。 たとえば、テキストファイルに、1行、 ”<abc>文字列1です><abc>文字列2です><abc>文字列3です>(ここで改行)” という文字列が存在しています。 それを対象として、 (秀丸の)正規表現を利用し、 ”<abc>文字列2です>”だけをマッチさせたいのですが、 試しに、(秀丸の)正規表現で、 <abc.*文字列2.*?>  ←(なお、実際の記号は半角(.*?等)で、それぞれ入力しています・・・) で検索実行したところ、 ”<abc>文字列1です><abc>文字列2です>” として、 前の方に、マッチして欲しくない、 ”<abc>文字列1です>” までがマッチしてしまっている状況です。 そこでご質問なのですが、 上記におきまして、(秀丸の)正規表現を利用して、 ”<abc>文字列2です>”だけをマッチさせるには、 どのようにすれば、よろしかったでしょうか? (ちなみに秀丸は、2013年12月10日(火)現在の  最新バージョンVer8.32を利用しています) 以上になります。 宜しくお願いいたします。

  • grepによる文字列検索のシェル作成の手順

    Solaris9のOSにて、以下の仕様のシェルを作成したいと思っています。 特定のディレクトリ配下にある全てのファイル内で特定の文字列「abc」のある行を抽出し、ファイル化したい。 (検索対象が1ファイルであれば、grep -n abc test.txtでよいですが、ファイル名がたくさんある場合のシェルの作り方がわかりません。) また、どのファイルから検索したのかがわかるように抽出した行の前にファイル名をつけられると大変助かります。 例) ---test1.txtから検索--- 8:XXXXabcXXXX 11:XXXXabcXXX ---test2.txtから検索--- 10:XXXXXXXXabcXX お手数ですが、宜しくお願いします。

  • AIX kshスクリプトのtar+compressを1行で書く方法について

    こんにちは。はじめまして、hisatoと申します。 AIX kshスクリプトのtar+compressについて 質問がございます。 基本は下記の通りで問題なく完了するのですが、 # アーカイブ処理 tar -cvf - <固める対象のファイル名> | compress >圧縮ファイル名.tar.Z 下記の処理にすると、エラーが発生してしまいます。 tar -cvf - -L <固める対象のファイル名リスト> | compress >圧縮ファイル名.tar.Z tar: 次のフラグにはパラメータが必要です: L 使用方法: tar -{c|r|t|u|x} [-BdFhilmopsvw] [-Number] [-fFile] [-bBlocks] [-S [Feet] [Feet @Density] [Blocksb]] [-LInputList] [-NBlocks] [-C Directory] File ... -Lを使用する場合は、-オプションを使用して新規アーカイブ・ファイルを作成し、 そのアーカイブ・ファイルをcompressに渡すことはできないのでしょうか? 以上、ご教授お願いいたします。