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
編集:コメント形式が悪いため、実行手順を追加しました。
端末で実行:
- 上記のAとBを関連ディレクトリのフルパスに変更します(またはこれら2つのディレクトリを含むディレクトリにcd)。
- 貼り付けコマンド
スクリプトで実行:
- AとBがあるディレクトリのcheck-dm4.shというファイルにコマンドを置きます(.shサフィックスは何もしませんが、シェルスクリプトでは一般的です)。
- ファイルの上部(最初の行)に次の行を挿入します。
#!/bin/bash
- ファイルを実行可能ファイルとして表示します(chmod + x check-dm4.shまたは右クリック - >プロパティ/配布で呼び出される名前)4.ファイルを実行します。