Wildcards

即使未設置 dotglob,* 是否匹配 tar 中的隱藏文件?

  • January 11, 2014

我的印*像是 glob 不匹配以點為前綴的文件,除非您手動啟用此類功能(通過 dotglob 或您的 shell 的等效項)。

但是,如果我有一個a包含文件file1和的目錄.hidden1,那麼如果我這樣做

tar -cvpjf backup.tar.bz2 --exclude 'a/*' a

生成的 tar 文件僅包含空目錄a,沒有隱藏或非隱藏文件的踪跡。我的期望是只有非隱藏的file1會被排除在外。

這裡發生了什麼?

首先,由於您已將萬用字元括在單引號中,因此它由tar, 而不是您的 shell 擴展,因此其 dotglob 選項將無效。

tar*萬用字元匹配所有內容,包括點和斜杠(如您找到的文件中所述),因此您必須從排除**中排除以點開頭的文件:

tar -cvpjf backup.tar.bz2 --exclude 'a/[^.]*' a

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