.tbzに変換するか、他の方法を使用して違いを見つけます。

.tbzに変換するか、他の方法を使用して違いを見つけます。

2つのフォルダがあります。フォルダA - 合計1786個のdm4ファイルがあります。フォルダB - 合計2131 tbz(AおよびBフォルダで利用可能なdm4のアーカイブファイル)ファイルとフォルダAドキュメントにない124 dm4があります。

目的は、すべてのdm4を1つのフォルダに配置し、フォルダBにtbzファイルを含むdm4が見つからないことを確認することです。ただし、欠落している124個のdm4ファイルをすべてフォルダBからAにコピーすると、1910個のDM4ファイルが追加されます。ただし、My Folder Bには2131TBZがあるとマークされています。これは、フォルダbに残っている221個のdm4ファイル/ tbzファイルの名前を知る必要があるため、そのファイルが私のdm4リストにありません。

この状況で欠落しているdm4s / tbzファイルを見つける最速の方法は何ですか?

ベストアンサー1

私が理解したことを確認するために、これは正しいですか?

2131 個の .tbz ファイルがあり、各ファイルには対応する .dm4 (例: example-file-09.tbz example-file-09.dm4) が含まれている必要がありますが、その dm4 ファイルが不足しているため、どのファイルが見つかるかを確認する必要があります。

これが正しいと仮定するとうまくいくでしょう(ファイル名にスペースがないとします)。

dm4_files="$(find A -name '*.dm4')"
for file in $(find B -name '*.tbz'); do 
  # || is a logical or operator; bash will only execute the right side if the left side fails (returns a non-zero exit code)
  echo -e "$dm4_files" | grep -q "$(basename $file .tbz).dm4" || echo "Missing $(basename $file .tbz).dm4"
done

編集:コメント形式が悪いため、実行手順を追加しました。

端末で実行:

  1. 上記のAとBを関連ディレクトリのフルパスに変更します(またはこれら2つのディレクトリを含むディレクトリにcd)。
  2. 貼り付けコマンド

スクリプトで実行:

  1. AとBがあるディレクトリのcheck-dm4.shというファイルにコマンドを置きます(.shサフィックスは何もしませんが、シェルスクリプトでは一般的です)。
  2. ファイルの上部(最初の行)に次の行を挿入します。 #!/bin/bash
  3. ファイルを実行可能ファイルとして表示します(chmod + x check-dm4.shまたは右クリック - >プロパティ/配布で呼び出される名前)4.ファイルを実行します。

おすすめ記事