diffがファイルの終わりで改行をチェックしないようにします

blueFast

比較したい2本の大きな木があります。ツリー内の一部のファイルは、一方のファイルの最後に改行があり、もう一方のファイルにこの改行がないという理由だけで異なります。私はこの事実を無視したい。私はdiffこのように呼んでみました:

diff --ignore-all-space -r <dir1> <dir2>

そして、これは機能しています。私の問題は、他の違い(スペース関連)も無視することです。これは重要な場合があります。

要約すると、EOFの改行を無視したいだけです。これはで可能diffですか?

マイケル

基本的に、末尾のバイトを条件付きで無視して、2つのファイルを比較する必要があります。これを行うための「diff」オプションはありませんが、実行できる方法はいくつかあります(たとえば、hex diffも思い浮かびます)。

'diff'を使用するには、基本的に、ファイルの最後に改行がないファイルを変更してから、比較する必要があります。変更されたファイルを使用して一時ディレクトリを作成することも、少しのスクリプトを使用してメモリ内で作成することもできます。(どちらが優先されるかは、設定​​、ファイルサイズ、ファイル数によって異なります...)

たとえば、次のようにファイルの内容sed -iを変更し(インプレースで変更するために使用ます。これはstdoutに出力されます)、改行がない場合は改行を追加します(または、改行が既にある場合はファイルを変更しないでください)。

sed -e '$a\'  file1.txt

そして、「diff」構文を確認するだけです(trueを返すことはそれらが同じであることを意味し、falseは異なることを意味します):

$ diff a/file1.txt   b/file1.txt  \
      && echo '** are same' || echo '** are different'
2c2
< eof
---
> eof
\ No newline at end of file
** are different

空白のみが異なることを確認します。

$ diff --ignore-all-space  a/file1.txt   b/file1.txt \
     && echo '** are same' || echo '** are different'
** are same

bashでは、「sed」を使用して、ファイルの内容が「diff」に渡されるときにファイルの内容を操作できます(元のファイルは変更されません)。

$ diff <(sed -e '$a\' a/file1.txt) <(sed -e '$a\' b/file1.txt) \
     && echo '** are same' || echo '** are different'
** are same

これで、エミュレートdiff -rしてディレクトリを再帰的に比較するだけです。もし、ディレクトリを比較aし、b内のすべてのファイルのために、その後、a(例えば、a/dir1/dir2/file.txt内のファイルへの)を導出パスb(例えば、b/dir1/dir2/file.txt)と比較します。

$ for f in $( find a -type f  )
> do
>    diff <(sed -e '$a\' $f) <(sed -e '$a\' b/${f#*/})
> done

もう少し冗長なバージョン:

$ for f in $( find a -type f  )
> do
>   f1=$f
>   f2=b/${f#*/}
>   echo "compare: $f1 $f2"
>   diff <(sed -e '$a\' $f1) <(sed -e '$a\' $f2) \
>       && echo '** are same' || echo '** are different'
> done && echo '** all are same' || echo '** all are different'
compare: a/file1.txt b/file1.txt
** are same
compare: a/file2.txt b/file2.txt
** are same
** all are same

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ファイルの終わりに改行を追加しないようにする

分類Dev

ファイルの終わりに改行を追加しないようにする

分類Dev

Gedit、Gvim、Vim、Nanoがファイルの終わりの改行文字を追加しないようにするにはどうすればよいですか?

分類Dev

Gedit、Gvim、Vim、Nanoがファイルの終わりの改行文字を追加しないようにするにはどうすればよいですか?

分類Dev

npmで生成されたpackage.jsonに対して「\ファイルの終わりに改行がありません」の差分を取得しないようにjsonをファイルに書き換える方法

分類Dev

sort -oは、ファイルの終わりに改行を追加します-なぜですか?

分類Dev

GCCがファイルの終わりに改行に関する警告を生成しないのはなぜですか?

分類Dev

バッチファイルのGradleは、cmd.exeが終了しないようにします

分類Dev

ファイルの終わりにある空の改行を削除します

分類Dev

シェル スクリプトで getopts を使用しているときに予期しないファイルの終わりエラーが発生する

分類Dev

XCOPY ファイルの検証はシンボリック リンクで失敗しますが、diff はファイル間の違いを表示するようになりました

分類Dev

シェルで予期しないファイルの終わりを示すエラーが発生する

分類Dev

VS Code:ファイルの終わりの改行が持続しない

分類Dev

VIMはファイルの終わりで自動改行を無効にします

分類Dev

Cのファイルの終わりでない限り、データを条件付きでスキャンしようとしています。

分類Dev

ファイルDOが存在するにもかかわらず、ファイルが存在するかどうかのPythonチェックが機能しない

分類Dev

btrfsを使用しているファイルのチェックサムが失敗すると、実際にはどうなりますか?

分類Dev

ファイル名が拡張子で終わっていない画像をどのようにダウンロードしますか?

分類Dev

バッチファイル-計算された日付をファイルの終わりに追加します

分類Dev

gzipを使用しているときに、スクリプトで予期しないファイルの終わりが発生するのはなぜですか?

分類Dev

「予期しないファイルの終わり」例外を解決するのに助けが必要ですか?

分類Dev

シェルスクリプトを実行すると、予期しないファイルの終わりが発生します

分類Dev

JetBrains Riderの「コードの再フォーマット」アクション(Ctrl + Alt + L)は、ファイルの終わりにある改行を削除します

分類Dev

1から10で終わる最初の10個のファイルがループを必要とせずにbashに存在するかどうかをBashでチェックインするにはどうすればよいですか?

分類Dev

ステータスコードでスクリプトを終了しようとしましたが、「予期しないファイルの終わり」が発生しました

分類Dev

ループの終わりにレールコンソールがオブジェクトを印刷しないようにします

分類Dev

並列 (gnu-)make は、すべての依存オブジェクト ファイルが (「開始」のみではなく) 「終了」するまでリンクする前に待機しないようにする必要がありますか?

分類Dev

Visual Studioエディターでファイルをチェックしないようにする

分類Dev

シェルスクリプトを使用して、* inoで終わるファイルの名前を返すにはどうすればよいですか?

Related 関連記事

  1. 1

    ファイルの終わりに改行を追加しないようにする

  2. 2

    ファイルの終わりに改行を追加しないようにする

  3. 3

    Gedit、Gvim、Vim、Nanoがファイルの終わりの改行文字を追加しないようにするにはどうすればよいですか?

  4. 4

    Gedit、Gvim、Vim、Nanoがファイルの終わりの改行文字を追加しないようにするにはどうすればよいですか?

  5. 5

    npmで生成されたpackage.jsonに対して「\ファイルの終わりに改行がありません」の差分を取得しないようにjsonをファイルに書き換える方法

  6. 6

    sort -oは、ファイルの終わりに改行を追加します-なぜですか?

  7. 7

    GCCがファイルの終わりに改行に関する警告を生成しないのはなぜですか?

  8. 8

    バッチファイルのGradleは、cmd.exeが終了しないようにします

  9. 9

    ファイルの終わりにある空の改行を削除します

  10. 10

    シェル スクリプトで getopts を使用しているときに予期しないファイルの終わりエラーが発生する

  11. 11

    XCOPY ファイルの検証はシンボリック リンクで失敗しますが、diff はファイル間の違いを表示するようになりました

  12. 12

    シェルで予期しないファイルの終わりを示すエラーが発生する

  13. 13

    VS Code:ファイルの終わりの改行が持続しない

  14. 14

    VIMはファイルの終わりで自動改行を無効にします

  15. 15

    Cのファイルの終わりでない限り、データを条件付きでスキャンしようとしています。

  16. 16

    ファイルDOが存在するにもかかわらず、ファイルが存在するかどうかのPythonチェックが機能しない

  17. 17

    btrfsを使用しているファイルのチェックサムが失敗すると、実際にはどうなりますか?

  18. 18

    ファイル名が拡張子で終わっていない画像をどのようにダウンロードしますか?

  19. 19

    バッチファイル-計算された日付をファイルの終わりに追加します

  20. 20

    gzipを使用しているときに、スクリプトで予期しないファイルの終わりが発生するのはなぜですか?

  21. 21

    「予期しないファイルの終わり」例外を解決するのに助けが必要ですか?

  22. 22

    シェルスクリプトを実行すると、予期しないファイルの終わりが発生します

  23. 23

    JetBrains Riderの「コードの再フォーマット」アクション(Ctrl + Alt + L)は、ファイルの終わりにある改行を削除します

  24. 24

    1から10で終わる最初の10個のファイルがループを必要とせずにbashに存在するかどうかをBashでチェックインするにはどうすればよいですか?

  25. 25

    ステータスコードでスクリプトを終了しようとしましたが、「予期しないファイルの終わり」が発生しました

  26. 26

    ループの終わりにレールコンソールがオブジェクトを印刷しないようにします

  27. 27

    並列 (gnu-)make は、すべての依存オブジェクト ファイルが (「開始」のみではなく) 「終了」するまでリンクする前に待機しないようにする必要がありますか?

  28. 28

    Visual Studioエディターでファイルをチェックしないようにする

  29. 29

    シェルスクリプトを使用して、* inoで終わるファイルの名前を返すにはどうすればよいですか?

ホットタグ

アーカイブ