cp命令——復制當前目錄、復制文件夾


復制當前目錄.

當前目錄下既有文件夾也有文件:

  • ~/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文件夾下。
    `


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM