質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

Q&A

解決済

3回答

290閲覧

履歴管理されたディレクトリで一世代前のディレクトリとDIFFを取る方法を教えてください。

ogaden

総合スコア12

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

0グッド

0クリップ

投稿2018/11/16 01:02

日付を名称にしたディレクトリが履歴管理されています。
最新と一つ前のディレクトリの差分を取りたいのですが、最新の取り方はわかるものの、その一つ前を特定する方法が分かりません。

linux

1$ ls -la 2drwxr-xr-x 3 group users 512 Nov 9 16:51 20181109165049 3drwxr-xr-x 3 group users 512 Nov 9 16:55 20181109165547 4drwxr-xr-x 3 group users 512 Nov 9 17:04 20181109170437 5drwxr-xr-x 11 group users 512 Nov 9 18:08 20181109180752 6$ find . -maxdepth 1 -name "20*" | sort -r | head -1 7./20181109180752 8 9#20181109170437の取り方が分からない。

シェルで実行する処理で、以下のようなdiffを行いたいと思っていますがご存知ないでしょうか?

linux

1$ diff -r 20181109180752 20181109170437

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

diff -r $( find -maxdepth 1 -type d -iname "20????????????" | sort | tail -2 )

かな

投稿2018/11/16 01:55

編集2018/11/16 02:13
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ogaden

2018/11/16 02:52

ありがとうございます。 findコマンドにディレクトリ指定がなく動かなったので、こちらで動作確認しました。 diff -r $( find . -maxdepth 1 -type d -iname "20????????????" | sort | tail -2 ) 数字14桁限定で差分が取れるコードでしたので、こちらも拡張して活用させていただきます。
退会済みユーザー

退会済みユーザー

2018/11/16 03:20

あー find のバージョンの違いか
guest

0

ベストアンサー

私が勘違いしていなければ……例えば次のようにすることで実現できるのではないかと思います。

bash

1diff -r $(find . -maxdepth 1 -name "20*" | sort -r | head -2)

いかがでしょうか。

投稿2018/11/16 01:30

gh640

総合スコア1407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ogaden

2018/11/16 03:00

迅速なご回答ありがとうございます。 目的達することができました。
gh640

2018/11/16 04:30

ご丁寧に結果をお知らせくださりありがとうございます。よかったです :)
guest

0

-name "20*"としてしまうと、20が名前に含まれるディレクトリはすべて認識してしまいます。

少し長くなってしまいますが、20から始まる数字14桁のの名前のディレクトリのみ判定したい場合は、

ls -l | egrep ' 20[0-9]{12}$' | awk '$0=$NF' | sort -r | head -2 | xargs diff -r または diff -r $(ls -l | egrep ' 20[0-9]{12}$' | awk '$0=$NF' | sort -r | head -2)

などを試されては。

投稿2018/11/16 01:44

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ogaden

2018/11/16 02:59

ご教授ありがとうございました。 想定外のディレクトリを拾ってしまうケースの考慮できていませんでした。助かりました。 教えていただいたコードですが、こちらの環境でディレクトリ名がとれませんでした。 動くコードをまだ見いだせていませんが、取り急ぎお礼とさせていただきます。
退会済みユーザー

退会済みユーザー

2018/11/16 03:08

あらなんと、それはすいませんでした。。。 もし考慮するのであれば、grepコマンドなどをうまく入れていただければ解決すると思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問