轉換為.tbz或使用其他方式來找出差異

轉換為.tbz或使用其他方式來找出差異

我有兩個資料夾資料夾A - 總共有1786 個dm4 檔案資料夾B - 總共有2131 個tbz(A 和B 資料夾中可用的dm4 的存檔檔案)檔案以及不在資料夾A 中的124 個dm4文件。

目標是將所有dm4 放在一個資料夾中,並確保資料夾B 中沒有遺失包含tbz 檔案的dm4。到1910 個DM4 檔案。但是,我的資料夾 B 顯示我有 2131 tbz。這意味著我需要知道資料夾 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 變更為相關目錄的完整路徑(或者,cd 到包含這兩個目錄的目錄)
  2. 貼上命令

從腳本運行:

  1. 將指令放入帶有 A 和 B 的目錄中名為 check-dm4.sh 的檔案中(.sh 後綴不執行任何操作,但對於 shell 腳本來說是常規的)
  2. 在文件頂部插入以下行(第一行) #!/bin/bash
  3. 將檔案標記為可執行檔(chmod +x check-dm4.sh,或右鍵 -> 屬性/無論您的發行版如何稱呼它) 4. 運行文件

相關內容