我使用的是 CentOS7,當我使用指令時
cp /root/test/.* /root/test1
它還複製..
,複製來源父目錄中的所有檔案和資料夾。
如何避免複製.
和..
?
答案1
問題中沒有明確說明是否要複製僅有的隱藏名稱,或您是否想要複製所有檔案。同樣,是否要複製任何子目錄的內容。我假設你想複製僅有的隱藏名稱是當前目錄(因為您似乎想要使用命令執行此操作)。
您的命令不會複製父目錄中的所有文件,除非您也使用-R
選項 with cp
(或-r
with GNU cp
)來執行遞歸複製。如果沒有該-R
選項,cp
則會抱怨.
和..
是目錄,但不會複製它們。
在bash
shell 中,將GLOBIGNORE
shell 變數設定為:
您不希望 shell 將檔案名稱通配模式擴展為的 - 分隔名稱列表,
GLOBIGNORE='.:..'
然後複製你的文件,
cp /root/test/.* /root/test1
若要臨時設置GLOBIGNORE
,僅用於複製操作,請使用子 shell:
( GLOBIGNORE='.:..'; cp /root/test/.* /root/test1 )
答案2
通配以點開頭的所有名稱(除了.
和 )的標準習慣用法..
是.??*
。所以你的命令是
cp /root/test/.??* /root/test1