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

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

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

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

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

A 回答 (6件)

( 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だけにあるファイル)
でどうでしょうか?
    • good
    • 2

シェルスクリプトの中で使うなら



for name in `cd A ; find . -type f`
do if [ ! -e B/$name ]
then echo $name
fi
done

みたいなのもありかも。
find でAの下のファイルを捜し出して、
if でBの下に有るかどうか調べて
無ければ それなりの処理(上記では echo )をする
    • good
    • 3

diff -r で比較する場合、diff に -I オプション(違いを無視する)があれば、


diff -I ".*" -r A B
で、両方にファイルがあれば内容にかかわらず一致とみなせるので、結果を見るのが楽になります。

#4の方の案のようにファイル一覧の入ったファイルを作って比較するなら、diffでなくcommを使うと便利です。
comm -23 A.txt B.txt →Aにだけあるファイルを出力
comm -13 A.txt B.txt →Bにだけあるファイルを出力
comm -12 A.txt B.txt →両方にあるファイルを出力
    • good
    • 0

diff A B | grep ^A



ってのはダメなんでしょうか?もし純粋にファイル名だけをストリングとして欲しいなら、

diff A B | grep ^A | perl5 -e 'while(<STDIN>) { print "$2\n" if ($_ =~ /^([^:]*): (.*)/);}"

…ダメでしょうか?
    • good
    • 0

diff でもできるような気がします。


[tmp]$ ls a b
a:
aa ad

b:
aa ac



[tmp]$ diff -r a b
bだけに発見: ac
aだけに発見: ad

という具合になりますので。
(OS: vine 2.6)

詳細はdiffのマニュアルページを見て戴くとして、、、。
    • good
    • 0

一回だけ調べたいだけなら例えば


ls -l `ls ../A`
みたいな感じでどうですか。

この回答への補足

ご回答ありがとうございます。

おっしゃっているのは、

Bディレクトリに行き、
ls `ls ../A`
で、Aディレクトリにのみ存在するものが、
「No such file or directory」
と表示される

という意味だと思います。

質問に書いてないので申し訳ないのですが、
Aディレクトリの下にフォルダがあって、その中にファイルがあるというような深い階層も比較しようと考えています。

ls `ls ../A`
だと深い階層のファイルは比較できないようです。

lsを使うとすれば -R オプションが関係ありそうだ、という感じはするのですが、
具体的にどうすればよいのかわかりません。

単純なことだと思っているので、複雑にしたくないと思っています。
尚、シェルスクリプトの中で使います。

補足日時:2005/06/24 17:15
    • good
    • 0

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

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

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

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

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

Qカッティングマシン(STIKA)で窓に広告。必要なサイズは?

こんにちは。
店舗の窓に買ってカッティングマシン(STIKA等)
を使って、ロゴ、広告を張りたいと思っています。

この場合、どのサイズのカッティングマシンが
いいでしょうか。
たとえば、A4サイズでも、長さが自由に取れれば、
それなりに目立つと思います。
それとも、一度にA4サイズまでしか、
印刷できないのでしょうか。

とにかく、情報が少なく、通販でしか
手に入らない状況です。
経験者の方などで、なにか、アドバイスありましたら、
よろしくお願いします。

Aベストアンサー

まず、カッティングマシンを使用して商売をするのか個人的にお店のディスプレイするのかです?商売をするのであれば大型の万能型機械。個人でするのなら小型の機械です。個人で作るのでもコストが掛ますヨ。シートが高額です。その場限りの物でしたら加工業者に注文した方が安上がりです。購入するならSTIKAが一番使いやすいと思います。SV-12以上の物であればシートの幅250mm長さ305mm(1000mmまで対応。ずれる可能性がある)です。Mac&Windws対応でIllustratoでデザインして制作できます。

参考URL:http://www.rolanddg.co.jp/product/cutting/cutting/sv-15_12_8.html

QUNIXのコマンド教えて下さい。

UNIXで、lsの結果をファイルに出力する際、
ls > aaa.txtのようにすると出来ますが、
実行したコマンド "ls -la > aaa.txt"
もファイルに出力させたいのですが、どうすれば出来ますか?
知ってる方教えて下さい!

Aベストアンサー

UNIXの種類やバージョンによると思いますが、
script というコマンドが使えるかもしれません。

例えば
script bbb.log
とコマンド入力すると、
その後EOF(ターミナル設定によります)を入力するまでの
入出力がbbb.logに記録されます。

QアドビイラレでローランドCAMM-1(カッティングマシン)を動かしたい。譲り受けた物

ローランドCAMM-1 PNC1100(カッティングマシン)をもらったのでアドビ。イラレを使って動かしたいのですが動いてくれません。PCはwin98
celeron600mhz メモリ260 です。
私の作業内容は、まずイラレを起動させてアートボード(A4サイズ)にペンツールを使って(線幅0ptに設定)簡単な三角形を書いてそれをカッティングさせようと
(ファイルメニュー)→プリンタ(CAMM-1 PNC1100)を指定して
設定画面で(A4サイズ指定)して(OK)ボタンで出力しているのですがまったく反応がありません。
しいて言うなら右下に時計があるその横に一瞬プリンタのアイコンが出るのですがすぐに消えてしまいます。
で、2回3回と繰り返すとシステムリソースが足りなくなる始末です。

(プリンタの設定)→ローランドのドライバに印刷待ちジョブがないか確認したのですがこちらも0個になってしまっています。
機械は貰ったのですが説明書、ドライバ(アドビHPよりダウンロードしました)など付属品がない状況です。
ひょっとして全然やり方が違っていたりするのでしょうか?
助けてください!  宜しくお願いいたします。

ローランドCAMM-1 PNC1100(カッティングマシン)をもらったのでアドビ。イラレを使って動かしたいのですが動いてくれません。PCはwin98
celeron600mhz メモリ260 です。
私の作業内容は、まずイラレを起動させてアートボード(A4サイズ)にペンツールを使って(線幅0ptに設定)簡単な三角形を書いてそれをカッティングさせようと
(ファイルメニュー)→プリンタ(CAMM-1 PNC1100)を指定して
設定画面で(A4サイズ指定)して(OK)ボタンで出力しているのですがまったく反応がありません。
し...続きを読む

Aベストアンサー

こちらは、もう確認されたでしょうか?
http://www.rolanddg.co.jp/support/ht/pnc1100_1000A.html

参考URL:http://www.rolanddg.co.jp/support/ht/pnc1100_1000A.html

QCGIからのUNIXコマンドを防止する方法

telnet.cgi を使うと、CGIからUNIXコマンド(rmなど)が自由に使えてしまいます。

この利用を防止する方法はないですか。

/usr/bin /usr/local/bin フォルダのアクセス権を700にしてみたのですが、これではhttpdなど他のものまで、影響を受けてしまいました。

Aベストアンサー

group examを例にすると
-rwx---rwx hana:exm test.pl
には、akira:examな人はアクセスできません。
そんな感じでいいんじゃないんですか?
特定のグループを排除したいなら
ただ、この設定ではhana:examな人はあくせすできます。examに所属していても
hana:examもきにくわないなら007とか
まぁ~manでも読んでください
試せば3分で分かることですし

Q「程度の比較」と「性質の比較」について

比較には「程度の比較」と「性質の比較」の2種類があるといいますが、
「性質の比較」といわれているものについて疑問点がいくつか出てきました。

(1)He is more clever than (he is) wise.
(2)He is no more young than I am.
以上の2文について。

学校文法では、
(1)のような形の比較文を「同一事物の異なる性質の比較」と呼び、
(2)のような形の比較文を「クジラの公式」などと呼んでいます。

一般的に言われている「性質の比較」というのは、
(1)のような形だけを指しているのでしょうか?

つまり、比較構文の主節と比較節が同一の主語をとる場合だけ「性質の比較」に成り得り、
それ以外の構文は「程度の比較」という考え方なのでしょうか?

そのように考えると「性質の比較」と呼べるものはごく限られた構文だけとなってしまいます。
私は「クジラの公式」と呼ばれるものも一種の「性質の比較」だと今まで思っていました。

例えば、
[He is no more young than I am.]という文の場合、
[He is (very much) young]という文と
[I am (very much) young]という文の「程度」の度合いを比べて、
2つ文の「程度」が同様に正しくない、といっているわけで、
この考え方は[He is more clever than (he is) fair.]の場合の考え方と酷似していると思ったからです。

moreの基本的な意味合いとしては、
(1)*manyの比較級
(2)*muchの比較級
(3)*比較級の一部
この3つの用法があるわけですが、
上記の(1)・(2)の文のどちらのmoreも、
(2)*muchの比較級、と考えるのが妥当だと思います。

「クジラの公式」に関連していそうな文として、
このような文をみつけました。
・John is more clever than Mary is pretty.
(現代英文法講義p.565)

このような文がno<比較級>による変化を受けたものが、
「クジラの公式」と呼ばれるものの実態なのだと思います。
(例;A whale is no more a fish than a horse is a bird.)

しかし、
前述のような定義に則るものが「性質の比較」だとすると、
比較構文の主節と比較節の主語が一致していない以上、
「性質の比較」とはいえないことになります。

また、
この文は主節の[John is clever.]と比較節の[ Mary is pretty.]が、
比較基準がはっきりしない、
いわば「ねじれ」のような関係にあり、
この文を「程度の比較」とよんでよいのかも微妙です。

(あえてこれも「程度の比較」とするならば、
主節 [John is clever.]と比較節 [ Mary is pretty.]の
「正しさの程度」を比較しているということになりますが。)

・John is more clever than Mary is pretty.
・He is no more young than I am.

これらのような比較構文は、「程度の比較」と「性質の比較」の、
いわば中間に属しているものと思ってよいのでしょうか?

それとも、主節と比較節の「正しさの程度」を比較する、
「程度の比較」の延長にあるものと考えたほうがよいのでしょうか?

比較には「程度の比較」と「性質の比較」の2種類があるといいますが、
「性質の比較」といわれているものについて疑問点がいくつか出てきました。

(1)He is more clever than (he is) wise.
(2)He is no more young than I am.
以上の2文について。

学校文法では、
(1)のような形の比較文を「同一事物の異なる性質の比較」と呼び、
(2)のような形の比較文を「クジラの公式」などと呼んでいます。

一般的に言われている「性質の比較」というのは、
(1)のような形だけを指しているのでしょうか?
...続きを読む

Aベストアンサー

そうですね。その教授の言われていることはよくわかります。

(2);「程度の比較」と「性質の比較」という区別は便宜的なものであるから、それほど神経質にならなくてよい。

この点を私なりに説明してみます。

(A)<He>is【cleverer】than<I>am.

上の文は<He>と<I>を【clever】について比較しています。ところが、「彼はwiseというよりもcleverだ」という比較は、<clever>と<wise>を比較しています。

(B)*He is<clever> than <wise>.

つまり、(A)では【clever】は【比較の基準】ですが、(B)では<clever>自体が<比較の対象>です。したがって、これを比較級にするのは的外れです。そこで【more】を使って、

(B) He is【more】<clever>than<wise>.

とするわけです。と、このように考えると(A)と(B)も同じことのように思えます。<clever>が<比較の対象>であることにより、見かけ上特殊に見えるだけのような気がします。

たとえば「私はbeautiful(という単語)のほうが、pretty(という単語)よりも好きです」を英語にすると、

I like beautiful better than pretty.

となります(?)。「more beautiful」とならない理由は簡単です。<beautiful>が<比較の対象>そのものであって、【比較の基準】ではないからです。

そうですね。その教授の言われていることはよくわかります。

(2);「程度の比較」と「性質の比較」という区別は便宜的なものであるから、それほど神経質にならなくてよい。

この点を私なりに説明してみます。

(A)<He>is【cleverer】than<I>am.

上の文は<He>と<I>を【clever】について比較しています。ところが、「彼はwiseというよりもcleverだ」という比較は、<clever>と<wise>を比較しています。

(B)*He is<clever> than <wise>.

つまり、(A)では【clever】は【比較の基準】...続きを読む

Q必須のUNIXコマンドとは

ある事情で、ゴールデンウィーク明けまでにUNIXコマンドをある程度使えるようにならなければならなくなりました。

一応、コマンド集は買ってきたのですが、これを全てマスターするのはちょっと無理っぽいです。

そこで、とりあえず、このコマンドは知っておけ、というのがありましたら教えていただけませんでしょうか。

用途は主にLANの管理で、webサーバ、メールサーバ、ちょっとしたシェルスクリプトの保守と行ったところです。

MS-DOSのバッチファイルとかの経験はありますので、コマンドラインに対する拒絶反応とかはありません。
また、ディレクトリ構造とかマウントとかタスクとかログインとかの概念については理解しているつもりです。

細かいオプションとかパラメータについてはコマンド集を見たり、MANで探ったりします。

Aベストアンサー

よく使うコマンド・・・思いつくものを挙げます。これ以外が思いつかないということは・・・あまり使ってないんでしょうね。


cd (ディレクトリの変更)
ls (ファイルの表示 ls -alでよく使う)
less (ファイルの内容閲覧)
vi (ファイルの作成)
chmod(パーミッションの変更)
touch(空ファイル作ったり、更新日時を変える)

QThe比較級、the比較級、and the比較級

こんにちは、いつもお世話になります。

基本的な事なんですが、例えば「~~すればするほどXXになる。」という場合は普通に、「the 比較級、the 比較級」だと分かるんですが、

「~~すればするほど、XXになりまたYYになる」という場合は、「The 比較級, the 比較級, and the 比較級」とするれば良いんですよね? 「The 比較級, the 比較級, the 比較級」だとやっぱり間違いというか「~~すればするほどXXになり、XXすればするほどYYになる」と意味が変わってしまいますか?

洋書を読んでいて、こんな文がありました。意味は分かるのですが、やっぱり、三つ目の「the 比較級」の前にコンマとandが必要なのかな?と悩んでいます。

The more I thought about it, the less I understood what was happening to me, and the more it hurt.(出典: Dexter in the Dark 著者:Jeff Lindsay)

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

こんにちは、いつもお世話になります。

基本的な事なんですが、例えば「~~すればするほどXXになる。」という場合は普通に、「the 比較級、the 比較級」だと分かるんですが、

「~~すればするほど、XXになりまたYYになる」という場合は、「The 比較級, the 比較級, and the 比較級」とするれば良いんですよね? 「The 比較級, the 比較級, the 比較級」だとやっぱり間違いというか「~~すればするほどXXになり、XXすればするほどYYになる」と意味が変わってしまいますか?

洋書を読んでいて、こ...続きを読む

Aベストアンサー

お久しぶりです。
文法はあまり得意でないのですが……

「the比較級、the比較級」は、「A, B」と並列に並んでいると捉えてはいけません。Aが従節でBが主節です。だからandで繋がないのです。
従って、主節が「XXになりまたYYになる」と2つ繋がる場合は、当然、文法的にandが必要です。「B, and C」となります。

QUnix-sedコマンドによる置換について

sedでコマンド次の文字列をスペースに置換したいのですが
うまくいきません。BF-DR1 =(0)A[7]OPN-ENDはスペースや大カッコが含まれています。
与えたコマンドは、
sed -e "s/ BF-DR1 =(0)A[7]OPN-END//g" <bf1Open.log>rrr.txt
ですが、出力ファイルはまったく置換されていませんでした。
お分かりになる方どなたかご教授ください。

Aベストアンサー

行中に "BF-DR1 =(0)A[7]OPN-END" という文字列が含まれていて、
これをスペース1文字(" ")に変換するということで良いでしょうか?

であれば、大括弧[]は sed の正規表現として特別な意味を持ちますので、
単に文字として扱う場合には \ でエスケープする必要があります。
結果として、次のようにすればよいと思います。
sed -e "s/BF-DR1 =(0)A\[7\]OPN-END/ /g" <bf1Open.log>rrr.txt

Q比較級が用いられている文について

比較級が用いられている文で「than~」が伴わない(省略ではなく、元から「than~」が存在しない)形はあるのでしょうか?(the比較級や比較級and比較級などの慣用表現以外で)

Aベストアンサー

絶対比較級などを除いて,基本的に than ~を補うことはできます。
よくあるのは「今より,現状より」で,「もっと~」と訳すパターンです。
You must study harder.

know better というのは,本来,know better than to do ~で「~してしまうよりは分別がある,~しないだけの分別がある,~するほど愚かではない」のように用います。

そして,「何をしてしまうか」が前に書かれていたり,今問題になっていることであったりして明確な場合には省かれます。

QUNIX コマンドで 複数ファイルの文字列置換の方法

UNIX初心者です。
UNIXのコマンドで複数のファイルの中身を同時に置換できないでしょうか?

自分で探しては見たのですが、"sed"しか見つかりません。
sed 's/aaa/AAA/g' <file1> file2
という方法では、ひとつずつなので、時間がかかってしまいます。
UNIXコマンドには、ありませんでしょうか。
また、無ければどのような知識が必要でしょうか。
私の知識が少ない為、内容が判りにくいとは思います。
すみませんが、よろしくお願いします。

Aベストアンサー

シェルスクリプトを書くのが普通だと思います。
例えばCシェルならば

foreach f ( `ls` )
 sed 's/aaa/AAA/g' < ${f} > ${f}_changed
end

という具合にすれば、カレントディレクトリの全ての
ファイルについて、変換して新しいファイルを作ります。

#Cシェルのスクリプトなんか「普通」じゃないという
#人もいますが、あしからず。


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

人気Q&Aランキング

おすすめ情報