Wildcards
即使未設置 dotglob,* 是否匹配 tar 中的隱藏文件?
我的印
*
像是 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