ID登録せずに、無料で質問できる♪ 教えて!gooアプリ>>

UNIXでディレクトリAとBにある拡張子 .cblと .cpyのみをもつファイルを比較しようとしているのですが、どうすれば一番簡単にできますか?
xargsを使うことになるとはおもうのですが、ファイルを指定するうまい方法が見つかりません。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

diff とは」に関するQ&A: 「Diffをとる」とは?

A 回答 (4件)

#2です。

すいません、-J はFreeBSDだけの機能でした。
(cd A; ls -1 *.cbl *.cpy)|xargs -i diff A/{} B/{}
で、linuxでもAIXでもいけると思います。

参考URL:http://publib16.boulder.ibm.com/doc_link/Ja_JP/a …
    • good
    • 0

xargs を使ってやるとすると、


(cd A;echo *.cbl *.cpy)|xargs -J % -n 1 diff A/% B
でどうでしょうか。
    • good
    • 0
この回答へのお礼

どうもありがとうございました。
AIXなんですが、Jが unknown optionといわれてエラーとなってしまいます。

どうもいい方法がないようですね。
しょうがいなですから、スクリプトを書きます。

お礼日時:2005/04/20 09:52

ディレクトリA、Bにあるファイルで拡張子.cblと.cpy以外の拡張子を持つファイルの種類がそれ程多くないときにはGNU diffで--excludeオプション指定すれば簡単に出来そうだけど、多い場合は指定するのがつらいかな。


そうするとスクリプトを組んだ方がいいかも。

-------8<-------8<-------8<-------8<-------8<-------8<-------
% diff -v
diff - GNU diffutils version 2.7
% find . -print
.
./A
./A/a.cbl
./A/a.cpy
./A/t.txt
./A/t.html
./B
./B/a.cbl
./B/a.cpy
./B/b.cbl
./B/b.cpy
% diff -s A B
Files A/a.cbl and B/a.cbl are identical
Files A/a.cpy and B/a.cpy are identical
Only in B: b.cbl
Only in B: b.cpy
Only in A: t.html
Only in A: t.txt
% diff -s --exclude='*.txt' --exclude='*.html' A B
Files A/a.cbl and B/a.cbl are identical
Files A/a.cpy and B/a.cpy are identical
Only in B: b.cbl
Only in B: b.cpy
-------8<-------8<-------8<-------8<-------8<-------8<-------
    • good
    • 0

あてずっぽで:


diff A/*.cpy A/*.cbl B
でできたりして.
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QUNIXで、ディレクトリを比較して、ファイル・ディレクトリの存在を比較したい

やりたいこと自体は単純なことなのですが・・

UNIXのコマンドで、
2つのディレクトリA、Bを比較して、
Aだけにあるディレクトリ・ファイルのみを取得できるようなものを教えてください。
(ファイルが同一かどうかは問題ではなくて、あくまでも存在不存在の比較です。)

コマンドを組み合わせたり、オプションを使ってもかまいません。

diffコマンドってこういうとき使えないのでしょうか。

Aベストアンサー

( cd (ディレクトリA) ; find . -print |sort ) > A.txt
( cd (ディレクトリB) ; find . -print |sort ) > B.txt
としてディレクトリリストを作っておいて
diff A.txt B.txt | grep '^<' (Aだけにあるファイル)
diff A.txt B.txt | grep '^>' (Bだけにあるファイル)
でどうでしょうか?

Qshellのコマンド deffの差分の行数を出力する

diff結果の差分の行数を出力するコマンドを教えてください。

たとえばaaa.txtとbbb.txtのdiff比較をした場合
aaa.txtから見たbbb.txtとの差分の行数

bbb.txtから見たaaa.txtとの差分の行数

よろしくお願いいたします。

Aベストアンサー

単純に diff の結果(例えば side by side として)をリダイレクトして < で始まる行の数とかを数えたらいいのでは?

diff file1.txt file2.txt | grep -c -e "^<"

な感じで。

「差分の行数」というのをどう数えたいのかよくわかりませんが。

Q~以外を削除する場合(rmコマンド)

linuxのコマンドで
~以外のファイル、ディレクトリを全て削除したい時は
どのような記述をすれば良いのでしょうか?
シェルスクリプトではなくrmコマンド1つで削除したのいですが…

例: tar以外のファイル・ディレクトリを
   すべて削除したい場合など

どなたかご存知の方がいらっしゃったら
教えてください。よろしくお願い致します。

Aベストアンサー

rm コマンドのみという訳にはいきませんが基本的なコマンドを組み合わせると実現可能と思います。

「名前が tar で終わるもの以外のファイル・ディレクトリを削除する」場合だと

ls | grep -v -E 'tar$' | xargs rm -r

となります。

ファイルの一覧を取得し ( ls )
'tar'で終わるもの以外を抽出し ( grep )
その結果を rm -r の引数に指定して実行 ( xargs )

という流れです。

ファイルを削除するような操作については失敗するとダメージが大きいので、事前にテストして動作を確認すると良いとおもいます。また rm -r -i としてそれぞれのファイルについて、削除の問い合わせをするのも有効です。

Qsedの置換文字に変数を使用したいのですが・・・

あるファイルの特定の文字を変換し、上書きをする処理を行いたいのですが、sedの置換文字に変数が渡せなくて困っています。

例:
X="a"
Y="b"
echo test.txt | sed 's/${X}/${Y/g}' >test.txt

sedでは置換文字に${X}といった変数を使用することはできないのでしょうか?

Aベストアンサー

' ・・・' で囲まれた中の$はそのままドルマークです。変数展開をするなら、'・・・'で囲んではいけません。

何も囲まないか、"・・・"で囲むかです。

Qapt-get install ****** でinstallしたものをuninstallするには?

御世話になります。
vncserverだけをinstallするつもりが
誤って
apt-get install vncとうってしまいました。
これをuninstallしたいのですが
どのようにすればよろしいでしょうか?

教えて下さい。

Aベストアンサー

# apt-get remove パッケージ名
では、設定ファイルは削除されずに残ります。

完全に削除するときは、
# apt-get --purge remove パッケージ名
です。

Qprintf で二進表示を行いたい。

すみません。教えていただきたいことがあります。
printf で普通のintの値をフォーマット指定子を使用して二進表示をしたかったのですが見当たりませんでした。
どうにかintの内容を二進で確認したいのですが、どのようにすれば良いですか?
宜しくお願いします。

Aベストアンサー

★2進整数を表示する関数を自作すればよい。
・作り方は簡単で、最上位ビットから順に『0』と『1』を調べていき、ビットが
 立っていれば『putchar('1');』にして、ビットが OFF なら『putchar('0');』
 にすれば良いでしょう。
・下にサンプルを載せますので使いやすいように改良して下さい。

サンプル:
unsigned int bit = (1 << (sizeof(int) * 8 - 1));
int value = 12345; ←これが表示したい int 型の整数値です。

printf( "value の 2進表記は " );

for ( ; bit != 0 ; bit >>= 1 ){
 if ( value & bit ){
  putchar('1');
 }
 else{
  putchar('0');
 }
}
printf( " です。\n" );

最後に:
・1バイトが 8 ビットの環境が前提です。→まぁ、普通は 8 ビットですが…。
・上記のサンプルを関数などにすれば使いやすくなります。→print_bin()など
・以上。おわり。

★2進整数を表示する関数を自作すればよい。
・作り方は簡単で、最上位ビットから順に『0』と『1』を調べていき、ビットが
 立っていれば『putchar('1');』にして、ビットが OFF なら『putchar('0');』
 にすれば良いでしょう。
・下にサンプルを載せますので使いやすいように改良して下さい。

サンプル:
unsigned int bit = (1 << (sizeof(int) * 8 - 1));
int value = 12345; ←これが表示したい int 型の整数値です。

printf( "value の 2進表記は " );

for ( ; bit != 0 ; bit >>= 1 ){
 if...続きを読む

Q未、済、完了の英訳は?

前回類似件名で質問したのですが、
質問の仕方があまり良くなかったと思い質問し直させて頂きます。

ある項目に対して「未」、「済」、「完了」のいずれかを選択させたい帳票があるのですが、
これを英語で実現するにはどのような単語が当てはまるのでしょうか?(1,2語程度で)
「済」、「完了」については「done」が好ましいのかなと思っていますが
いかがでしょうか?

宜しくお願い致します。

Aベストアンサー

No. 2 です。

なるほど。。。
そういうことなのでしたら、“Done” と “Not Yet” が適切だと思います。

“Yet” は単独で用いられる場合、『まだ~ない』という意味に取られることはなく、接続詞の『でも』の意味で取られます。
なので、選択肢が “Done” と “Yet” であったとしても、理解してもらえない可能性が残ります。
それを排除するためには、“Not Yet” とするべきだと思います。

ご参考まで。^^

Qdiffコマンドにてテキスト出力

こんばんは。教えてください!

以下のような2つのファイルがあるとします。
・aaa.txt
abc111
abc222
abc333
・bbb.txt
abc333
abc444

これを比較して、比較結果をテキスト出力したいです。
テキスト出力したい比較結果は
(1)重複しているもの全てテキスト出力
(2)aaa.txtのみにあるものをテキスト出力
(3)bbb.txtのみにあるものをテキスト出力
また、(1)~(3)は別々のファイルに出力したいです。

diffコマンドで、
diff a.txt b.txt >> c.txt
とすると、
1つのテキストファイル(c.txt)に
(1)~(3)すべてが書かれてしまいます。

環境は、windows XPにてCygwinを使用しています。
diffコマンドでなくても構いません。
宜しくお願いします。

Aベストアンサー

このような場合はuniqコマンドを使うのがよいかと思います。
=======
aaa.txt
abc111
abc222
abc333
abc444
=======
bbb.txt
abc222
abc444
abc111
abc555
=======
のとき、
(1)重複しているもの
sort aaa.txt bbb.txt | uniq -d > 111.txt
(2)aaa.txtのみにあるもの
sort 111.txt aaa.txt | uniq -u > 222.txt
(3)bbb.txtのみにあるもの
sort 111.txt bbb.txt | uniq -u > 333.txt
でできます。

aaa.txt、bbb.txtのそれぞれの内容がユニークで無い場合(例えば、aaa.txtに「abc222」が複数含まれるなど)、あらかじめuniqにしておかなければなりませんが。

Qgrepで検索文字列が完全一致した行だけ取り出す方法

grepの文字列検索で検索文字列が単語として、完全一致した行だけ取り出す方法はないでしょうか?

通常は
grep hoge hoge.txt

と打つと、hogeが含まれる行が出力されますが、今回は含まれる行ではなくて完全に文字列が一致した行だけ取り出したいのです。

例えばhoge.txtの中に
cc ghoge
kkl hogem
jjll hoge
という3行があったとしたら最後の行でhogeという文字が空白で区切られた行だけ取り出したいのです。

何かよい方法があれば教えてください

Aベストアンサー

-w オプションじゃだめですか?

参考URL:http://www.linux.or.jp/JM/html/GNU_grep/man1/grep.1.html

Qエクセルのリンク解除ができない場合の対処

症状としては、時々ある事なのですが、エクセル(2003)でファイルのリンクを
編集→リンクの設定→リンクの編集→リンクの解除
をしても解除されない症状を解決するにはどうしたらよいでしょうか?
因みに外部リンクで、sumifやvlookupなどを使用しています。
また、列の非表示や、ソートでの行の非表示などはよく多用しています。
上記が起因しているかどうかは不明です。
ご存知の方いらっしゃいましたら、是非ご教授お願いします。

Aベストアンサー

名前の定義の中の参照範囲にリンク先が含まれていませんか。

エクセル2003は使っていないので、エクセル2000の場合を説明します。

「挿入」→「名前」→「定義」の「参照範囲」を確認して、リンクが含まれていれば削除して見て下さい。

リンクが含まれて無ければ、別問題ですので他の方の回答を待って下さい。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング