摘要
本文将介绍如何在 Linux 中拷贝、移动、删除和创建文件。
用法
拷贝
Linux 中使用 cp(copy 的缩写)命令拷贝文件。
cp [要拷贝的文件|文件列表|目录] [目的文件名|目的目录]
-
cp test.txt ~
:将 test.txt 拷贝到用户家目录 -
cp test.txt ~/test_bak.txt
:将 test.txt 拷贝到用户家目录,并重命名为 test_bak.txt -
cp test1.txt test2.txt test3.txt ~
:将 test1.txt、test2.txt、test3.txt 都拷贝到用户家目录 -
cp -r test ~
:将整个 test 目录拷贝到用户家目录
注意:
- 若目标目录有同名文件存在,会提示用户是否覆盖。若有批量同名文件存在,显示是一项非常麻烦的工作。这时可以在 cp 命令前加上
\
,然后再加上-f
参数。如将整个 test 目录拷贝到用户家目录,遇到同名文件强制覆盖:\cp -f test ~
。 - 拷贝文件时,文件的属性(包括文件拥有者,文件从属组以及文件访问权限)有可能发生变化。如用 root 身份将一个文件拷贝到 stu 用户的家目录下,文件的拥有者和从属组属性都会变成 root,这会导致 stu 用户无法修改和执行这个文件。因此,如果需要原原本本地将文件拷贝过来,还需在命令后面跟上一个
-p
选项,不过使用该参数的前提是登录用户对要拷贝的文件具有写权限。
移动
Linux 中使用 mv(move 的缩写)命令移动文件。
mv [要移动的文件|文件列表|目录] [目的文件名|目的目录]
-
mv test.txt ~
:将 test.txt 移动到用户家目录 -
mv test.txt ~/test_bak.txt
:将 test.txt 移动到用户家目录,并重命名为 test_bak.txt -
mv test1.txt test2.txt test3.txt ~
:将 test1.txt、test2.txt、test3.txt 都移动到用户家目录 -
mv test ~
:将整个 test 目录拷贝到用户家目录(不需要 -r 参数)
注意:
- 和 cp 命令相似,若遇到同名文件可使用 -f 参数强制覆盖。如将整个 test 目录拷贝到用户家目录,遇到同名文件强制覆盖:
mv -f test ~
。 - Linux 中并没有提供专门的重命名文件名命令,但可以用 mv 来实现,其原理是将文件从原本的目录移动到原本的目录,目录不变,只改变文件名。如将当前工作目录下的 test.txt 重命名为 test1.txt:
mv test.txt test1.txt
删除
Linux 中使用 rm(remove 的缩写)命令移动文件。
rm [要删除的文件|文件列表|目录]
-
rm test.txt
:删除当前工作目录下的 test.txt 文件 -
mv test1.txt test2.txt test3.txt
:删除当前工作目录下的 test1.txt、test2.txt、test3.txt 文件 -
rm -r test
:删除当前工作目录下的 test 目录 -
rm -rf test
:若提示无法删除,可搭配 -f 命令强制删除
创建
Linux 中使用 touch 命令创建文件。
touch [要删除的文件名]
- touch test.txt:在当前工作目录下创建名为 test.txt 的空文件
注意:
- 若当前工作目录下已存在同名文件,则自动跳过,但却会修改该文件的时间戳属性,即文件的最后修改时间属性会发生变化。
提示
想获取关于这些命令更详细的使用方法,可以在其后加上 --help
,例如:
$ rm --help
用法:rm [选项]... [文件]...
删除(unlink)指定<文件>。
-f, --force 强制删除。忽略不存在的文件,不提示确认
-i 每次删除前提示确认
-I 在删除超过三个文件或者递归删除前提示一次并要求确认;
此选项比 -i 提示内容更少,但同样可以阻止大多数
错误发生
--interactive[=场景] 根据指定的<场景>进行确认提示:never(从不)、
once(一次,等效于使用 -I)或者 always(总是,
等效于使用 -i)。如果使用此参数没有指定<场景>则
总是提示
--one-file-system 递归删除一个层级时,跳过所有不符合命令行参
数的文件系统上的文件
--no-preserve-root 不要对“/”特殊处理
--preserve-root[=all] 不要删除“/”(默认行为);
如添加了“all”参数,将拒绝处理与父目录位于
不同设备上的命令行参数
-r, -R, --recursive 递归删除目录及其内容
-d, --dir 删除空目录
-v, --verbose 详细显示进行的步骤
--help 显示此帮助信息并退出
--version 显示版本信息并退出
默认时,rm 不会删除目录。使用--recursive(-r 或-R)选项可删除每个给定
的目录,以及其下所有的内容。
要删除文件名第一个字符为“-”的文件(例如“-foo”),请使用
以下方法之一:
rm -- -foo
rm ./-foo
请注意,如果使用rm 来删除文件,通常仍可以将该文件恢复原状。如果想保证
该文件的内容无法还原,请考虑使用shred。
GNU coreutils 在线帮助:<https://www.gnu.org/software/coreutils/>
请向 <http://translationproject.org/team/zh_CN.html> 报告 rm 的翻译错误
完整文档请见:<https://www.gnu.org/software/coreutils/rm>
或者在本地使用:info '(coreutils) rm invocation'
参考
中国大学 MOOC | Linux系统管理 | 主题03 | 小节 3 | 拷贝、移动、删除和创建文件