復制當前目錄.
當前目錄下既有文件夾也有文件:
- 當
~/cptest這個文件夾已創建時,使用命令cp -r . ~/cptest/或cp -r . ~/cptest會將當前目錄下的所有文件夾和文件復制到~/cptest目錄下。 - 當
~/cptest這個文件夾還未被創建時,使用命令cp -r . ~/cptest/或cp -r . ~/cptest會創建此目錄,並將當前目錄下的所有文件夾和文件復制到~/cptest目錄下。
總結一下:
- 當source是個
.時,會認為dest必須是個文件夾。如果dest是個non-directory,那么就會報錯cp: cannot overwrite non-directory ‘AAA’ with directory ‘BBB’。 - 不管dest目標文件夾是否創建,效果都是一樣的(因為如果沒有創建,就會創建后,再復制)。
- 如果當前目錄下有一個文件夾叫
1.0(即ls能看到藍色的1.0),想要復制1.0的當前目錄,則使用cp -r 1.0/. ~/cptest。 - dest文件夾后面有沒有
/都是一樣的,下面的命令分析也能看出。
復制所有*
當前目錄下既有文件夾也有文件:
- 當
~/cptest這個文件夾已創建時,使用cp -r * ~/cptest/,會把所有非隱藏文件和非隱藏文件夾復制過去(隱藏即是即.開頭的)。這就是它和cp -r . ~/cptest/的區別。 - 當
~/cptest這個文件夾還未被創建時,使用cp -r * ~/cptest/,會報錯cp: target '/home/liu/cptest' is not a directory。
總結一下:
- 當source是個
*時,會認為dest是個文件夾。 - 復制
*相比.限制更多:當dest文件夾已創建,則只能復制非隱藏的東西過去;當dest文件夾未創建時,則命令不成功。
復制某個文件夾
當前目錄下有一個文件夾叫1.0(即ls能看到藍色的1.0),想要復制1.0到某個地方:
- 當
~/1.0這個文件夾已創建時,使用命令cp -r 1.0 ~/1.0/或cp -r 1.0 ~/1.0,會將當前目錄下的1.0文件夾復制到~/1.0文件夾下。即目錄結構是~/1.0/1.0/something。 - 當
~/1.0這個文件夾還未被創建時,使用命令cp -r 1.0 ~/1.0/或cp -r 1.0 ~/1.0,會將當前目錄下的1.0文件夾復制到~文件夾下(或者理解為,先新建~/1.0文件夾,再把1.0里所有東西復制到~/1.0)。即目錄結構是~/1.0/something(相當於先mkdir ~/1.0,再cp -r 1.0/. ~/1.0;注意是可以把1.0下的隱藏文件和隱藏文件夾都復制過去的)。這種情況下,使用cp -r 1.0 ~/2.0/也是一樣,目錄結構是~/2.0/something,相當於先改名,再復制。
總結一下:
- 當source是個文件夾時,會認為dest也必須是個文件夾。如果dest是個non-directory,那么就會報錯
cp: cannot overwrite non-directory 'AAA' with directory 'BBB'。 - 當dest文件夾已經存在,那么會把source文件夾放到dest文件夾下。
- 當dest文件夾不存在,那么新建dest文件夾,再把source文件夾下所有東西復制到dest文件夾下。
`
