linux复制文件到另一个文件夹的方法,Difference between cp and mv in Linux

题图来自Unsplash,基于CC0协议
导读
在Linux中复制文件到另一个文件夹是一个常用的作,可以使用cp命令完成。而mv命令则用于移动文件或目录,如果你想将文件移到文件夹中并保留源文件,应该用cp命令。
以下是一些常见的场景及相应的方法:
1. 复制文件到目录
基本语法:
cp [选项] <源文件> <目标目录>
示例:
# 将一个文件复制到目标目录
cp file.txt /path/to/destination/
2. 批量复制多个文件
可以一次复制多个文件到目录:
cp file1.txt file2.txt /path/to/destination/
如果你不清楚目标目录中是否存在这些文件,可以使用通配符来自动匹配:
# 注意:直接使用*可能会在目录中有隐藏文件或未匹配文件时创建空文件,请谨慎使用或先prototyping
cp *.txt /path/to/destination/ (可能会在目标目录没有匹配文件时创建一个名为file1.txt的空文件)
更安全的做法是先创建目标目录,或逐个处理。
3. 保留权限
复制文件通常会更改目标目录中的文件权限,使用 -p 选项可以保留上源文件的权限、所有权和时间戳:
cp -p file.txt /path/to/destination/
4. 复制目录(递归复制)
默认情况下cp不复制目录。要复制整个目录树,需要加上 -r 或 -R(递归)选项:
cp -r /path/to/source_dir/ /path/to/destination/
注意:这会复制目录本身,并且子目录中的所有内容。
5. 不覆盖已存在的目标文件
你可以使用 -n 选项(或 --no-clobber)来防止覆盖目标目录中已存在的文件,如果文件名冲突,复制会失败:
cp -n file.txt /path/to/destination/
6. 复制带空格的文件名
如果文件或目录名称中包含空格,在终端中使用引号(可以是双引号或单引号)可以确保bash将其视为单个实体:
cp "/path/to/file with space.txt" "/destination/folder/"
没有引号的情况(不推荐):
cp /path/to/file with space.txt /destination/folder/ # 这会被解释为复制"file"、"with"、"space.txt"
7. 以root身份复制
如果目标文件夹或文件需要特定的权限才能写入,而你当前不是root用户,可以使用 sudo cp(如果你有相应的权限)来执行:
sudo cp file.txt /protected/path/
或者切换到root用户后操作:
sudo -i # 进入root shell,然后使用 cp 命令
# 或者
sudo cp file.txt /protected/path/ # 在sudo后立即指定要执行的命令更安全、更常用
请注意:始终谨慎使用 sudo,因为它允许你以超级用户权限执行任何命令,可能会对系统造成破坏。
总结一下:
- 复制文件到目录:
cp source /destination_dir/ - 复制多个文件:
cp source1 source2 ... /destination_dir/ - 保留所有属性:
cp -p source /destination_dir/ - 复制目录及内容:
cp -r source_dir/ /destination_dir/ - 不覆盖已存在文件:
cp -n source /destination_dir/ - 处理带空格的文件:记得加引号。
- 追
sudo来处理权限问题。
选择合适的选项(如 -p, -n, -r)取决于你的具体需求,特别是在处理重要文件或在生产环境中操作时,最好先ls或test cp一下,确保命令的行为符合预期。
© 版权声明
本文由盾科技原创,版权归 盾科技所有,未经允许禁止任何形式的转载。转载请联系candieraddenipc92@gmail.com