Linux

tar diff:僅獲取文件名

  • May 23, 2021

使用 GNU tar 時tar df books.tar.bz2,我可能會得到以下詳細結果:

books/a.pdf: Mod time differs
books/a.pdf: Size differs
books/b.pdf: Mod time differs
books/b.pdf: Size differs

有沒有方便的方法來獲得以下輸出?

a.pdf b.pdf

原因很簡單,我想使用 的輸出tar df ...來創建另一個存檔,其中僅包含已更改的文件,例如,使用gtar cfvj books-updated.tar.bz2 a.pdf b.pdf.

您可以使用這樣的組合:

tar -df archive.tar | awk -F: '{print $1}' | sort -u

tar -df獲取更改的文件(你已經有了)

awk -F: '{print $1}'僅列印第一個“列”

sort -u刪除重複項

編輯:在@roaima 的輸入之後,如果您需要匹配名稱中包含冒號(或空格)的文件,您可以awk用這個替換部分

sed 's/\(.*\):.*/\1/'

這將有效地僅顯示文件名,直到最後一次出現冒號(位於第一列的末尾)

引用自:https://unix.stackexchange.com/questions/650146