【Linux】拷贝、移动、删除和创建文件(cp | mv | rm | touch)

摘要

本文将介绍如何在 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 目录拷贝到用户家目录

注意:

  1. 若目标目录有同名文件存在,会提示用户是否覆盖。若有批量同名文件存在,显示是一项非常麻烦的工作。这时可以在 cp 命令前加上 \,然后再加上 -f 参数。如将整个 test 目录拷贝到用户家目录,遇到同名文件强制覆盖:\cp -f test ~
  2. 拷贝文件时,文件的属性(包括文件拥有者,文件从属组以及文件访问权限)有可能发生变化。如用 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 参数)

注意:

  1. 和 cp 命令相似,若遇到同名文件可使用 -f 参数强制覆盖。如将整个 test 目录拷贝到用户家目录,遇到同名文件强制覆盖:mv -f test ~
  2. 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 的空文件

注意:

  1. 若当前工作目录下已存在同名文件,则自动跳过,但却会修改该文件的时间戳属性,即文件的最后修改时间属性会发生变化。

提示

想获取关于这些命令更详细的使用方法,可以在其后加上 --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 | 拷贝、移动、删除和创建文件

猜你喜欢

转载自blog.csdn.net/qq_42951560/article/details/125154405