与目录相关的操作命令


Linux与目录相关的操作命令学习

与目录相关的操作命令

mkdir命令

用于创建目录,要求创建目录的用户在当前目录中具有写权限

语法

mkdir dirName

命令参数:

-m 设定权限<模式> (类似 chmod),而不是 rwxrwxrwx 减 umask

-p 此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;

-v 每次创建新目录都显示信息

[wang@localhost ~]$ ls
公共  模板  视频  图片  文档  下载  音乐  桌面
[wang@localhost ~]$ mkdir wang
[wang@localhost ~]$ mkdir wangql -v
mkdir: 已创建目录 "wangql"
[wang@localhost ~]$ mkdir -pv  wang/tieniu/zhu
mkdir: 已创建目录 "wang/tieniu"
mkdir: 已创建目录 "wang/tieniu/zhu"
[wang@localhost ~]$ mkdir -vp scf/{lib/,bin/,doc/{info,product}}
mkdir: 已创建目录 "scf"
mkdir: 已创建目录 "scf/lib/"
mkdir: 已创建目录 "scf/bin/"
mkdir: 已创建目录 "scf/doc"
mkdir: 已创建目录 "scf/doc/info"
mkdir: 已创建目录 "scf/doc/product"

rmdir 命令

用于删除空白目录,删除某目录时也必须具有对父目录的写权限

语法

rmdir dirName

命令参数:

- p 递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除。

-v 显示指令执行过程

[wang@localhost ~]$ rmdir doc
rmdir: 删除 "doc" 失败: 没有那个文件或目录
[wang@localhost ~]$ ls
scf  test  wang  wangql  公共  模板  视频  图片  文档  下载  音乐  桌面
[wang@localhost ~]$ rmdir scf/doc
rmdir: 删除 "scf/doc" 失败: 目录非空
[wang@localhost ~]$ rmdir scf/doc/info
[wang@localhost ~]$ rmdir -v scf/doc/product
rmdir: 正在删除目录 "scf/doc/product"
[root@localhost wang]# tree -N
.
├── scf
│   ├── bin
│   ├── doc
│   └── lib
├── test
├── wang
│   └── tieniu
│       └── zhu
├── wangql
├── 公共
├── 模板
├── 视频
├── 图片
├── 文档
├── 下载
├── 音乐
└── 桌面

rm命令

删除一个目录中的一个或多个文件或目录,删除文件可以直接使用rm命令,若删除目录则必须配合选项”-r”

语法:

rm dirName

命令参数:

-f, –force 忽略不存在的文件,从不给出提示。

-i, –interactive 进行交互式删除

-r, -R, –recursive 指示rm将参数中列出的全部目录和子目录均递归地删除。

-v, –verbose 详细显示进行的步骤

[root@localhost wang]# ls
scf  test  wang  wangql  wang.txt  公共  模板  视频  图片  文档  下载  音乐  桌面
[root@localhost wang]# rm wang.txt
rm:是否删除普通空文件 "wang.txt"?y
[root@localhost wang]# ls
scf  test  wang  wangql  公共  模板  视频  图片  文档  下载  音乐  桌面
[root@localhost wang]#
-- 强制删除
[root@localhost wang]# ls
scf  test  wang  wangql  wang.txt  公共  模板  视频  图片  文档  下载  音乐  桌面
[root@localhost wang]# rm -f wang
wang/     wangql/   wang.txt
[root@localhost wang]# rm -f wang.txt
[root@localhost wang]#
-- 删除前逐一询问确认 
[root@localhost wang]# rm -i wang*.txt
rm:是否删除普通空文件 "wang1.txt"?y
rm:是否删除普通空文件 "wang2.txt"?y
rm:是否删除普通空文件 "wang3.txt"?y
[root@localhost wang]#
-- 将 wang子目录及子目录中所有档案删除
[root@localhost wang]# mkdir -p wang/wang1/wang2/wang3
[root@localhost wang]# tree -N
.
├── scf
│   ├── bin
│   ├── doc
│   └── lib
├── test
├── wang
│   ├── tieniu
│   │   └── zhu
│   └── wang1
│       └── wang2
│           └── wang3
├── wangql
├── 公共
├── 模板
├── 视频
├── 图片
├── 文档
├── 下载
├── 音乐
└── 桌面

20 directories, 0 files
[root@localhost wang]# rm -r wang
rm:是否进入目录"wang"? y
rm:是否进入目录"wang/tieniu"? y
rm:是否删除目录 "wang/tieniu/zhu"?y
rm:是否删除目录 "wang/tieniu"?y
rm:是否进入目录"wang/wang1"? y
rm:是否进入目录"wang/wang1/wang2"? y
rm:是否删除目录 "wang/wang1/wang2/wang3"?y
rm:是否删除目录 "wang/wang1/wang2"?y
rm:是否删除目录 "wang/wang1"?y
rm:是否删除目录 "wang"?y
[root@localhost wang]#

rm -rf [目录] 一个危险的命令会将目录及子目录中所有档案删除,并且不用一一确认。

mv命令

语法:

mv [选项] 源文件或目录 目标文件或目录

命令参数:

-b :若需覆盖文件,则覆盖前先行备份。

-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;

-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

-u :若目标文件已经存在,且 source 比较新,才会更新(update)

文件重命名:mv source_file(文件) dest_file(文件)

[root@localhost wang]# touch wang.txt
[root@localhost wang]# mv wang.txt  rename.log
[root@localhost wang]# ls
rename.log  scf  test  wangql  公共  模板  视频  图片  文档  下载  音乐  桌面
[root@localhost wang]#
# 目标目录与原目录一致,指定了新文件名,效果就是仅仅重命名。
[root@localhost test]# touch wang.xtx
[root@localhost test]# ls
wang.xtx
[root@localhost test]# pwd
/home/wang/test
[root@localhost test]# mv /home/wang/test/wang.xtx /home/wang/test/rename.txt
[root@localhost test]# ls
rename.txt
[root@localhost test]#

移动文件:mv source_file(文件) dest_directory(目录)

[wang@localhost ~]$ tree -N
.
├── scf
│   ├── bin
│   ├── doc
│   └── lib
├── wangql
│   └── test
│       ├── rename.log
│       └── rename.txt
├── 公共
├── 模板
├── 视频
├── 图片
├── 文档
├── 下载
├── 音乐
└── 桌面

14 directories, 2 files
[wang@localhost ~]$
[wang@localhost ~]$ pwd
/home/wang
[wang@localhost ~]$ mv wang/* test
mv: 无法获取"wang/*" 的文件状态(stat): 没有那个文件或目录
[wang@localhost ~]$ mv wangql/* test
[wang@localhost ~]$ tree -N
.
├── scf
│   ├── bin
│   ├── doc
│   └── lib
├── test
│   ├── rename.log
│   └── rename.txt
├── wangql
├── 公共
├── 模板
├── 视频
├── 图片
├── 文档
├── 下载
├── 音乐
└── 桌面

14 directories, 2 files
[wang@localhost ~]$

mv source_directory(目录) dest_directory(目录) 目录名 dest_directory 已存在,将 source_directory 移动到目录名 dest_directory 中;目录名 dest_directory 不存在则 source_directory 改名为目录名 dest_directory

[wang@localhost ~]$ tree -N
.
├── scf
│   ├── bin
│   ├── doc
│   └── lib
├── test
│   ├── rename.log
│   └── rename.txt
├── wangql
├── 公共
├── 模板
├── 视频
├── 图片
├── 文档
├── 下载
├── 音乐
└── 桌面

14 directories, 2 files
[wang@localhost ~]$ mv test test11
[wang@localhost ~]$ tree -N
.
├── scf
│   ├── bin
│   ├── doc
│   └── lib
├── test11
│   ├── rename.log
│   └── rename.txt
├── wangql
├── 公共
├── 模板
├── 视频
├── 图片
├── 文档
├── 下载
├── 音乐
└── 桌面

14 directories, 2 files
[wang@localhost ~]$ mkdir test
[wang@localhost ~]$ mv test11 test
[wang@localhost ~]$ tree -N
.
├── scf
│   ├── bin
│   ├── doc
│   └── lib
├── test
│   └── test11
│       ├── rename.log
│       └── rename.txt
├── wangql
├── 公共
├── 模板
├── 视频
├── 图片
├── 文档
├── 下载
├── 音乐
└── 桌面

15 directories, 2 files
[wang@localhost ~]$

移动当前文件夹下的所有文件到上一级目录 mv * ../

[wang@localhost ~]$ tree -N
.
├── scf
│   ├── bin
│   ├── doc
│   └── lib
├── test
│   └── test11
│       ├── rename.log
│       └── rename.txt
├── wangql
├── 公共
├── 模板
├── 视频
├── 图片
├── 文档
├── 下载
├── 音乐
└── 桌面

15 directories, 2 files
[wang@localhost ~]$
[wang@localhost ~]$ cd test/test11
[wang@localhost test11]$ mv * ../
[wang@localhost test11]$ tree -N
.

0 directories, 0 files
[wang@localhost test11]$ cd
[wang@localhost ~]$ tree -N
.
├── scf
│   ├── bin
│   ├── doc
│   └── lib
├── test
│   ├── rename.log
│   ├── rename.txt
│   └── test11
├── wangql
├── 公共
├── 模板
├── 视频
├── 图片
├── 文档
├── 下载
├── 音乐
└── 桌面

15 directories, 2 files
[wang@localhost ~]$

cp命令

主要用于复制文件或目录。

参数说明

  • -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
  • -d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。
  • -f:覆盖已经存在的目标文件而不给出提示。
  • -i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。
  • -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
  • -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
  • -l:不复制文件,只是生成链接文件。

在没有带-a参数时,两个文件的时间是不一样的。在带了-a参数时,两个文件的时间是一致的。

[wang@localhost ~]$ tree -N
.
├── scf
│   ├── bin
│   ├── doc
│   └── lib
├── test
│   ├── rename.log
│   ├── rename.txt
│   └── test11
├── wangql
├── 公共
├── 模板
├── 视频
├── 图片
├── 文档
├── 下载
├── 音乐
└── 桌面

15 directories, 2 files
[wang@localhost ~]$ cp -r test/* wangql
[wang@localhost ~]$ tree -N
.
├── scf
│   ├── bin
│   ├── doc
│   └── lib
├── test
│   ├── rename.log
│   ├── rename.txt
│   └── test11
├── wangql
│   ├── rename.log
│   ├── rename.txt
│   └── test11
├── 公共
├── 模板
├── 视频
├── 图片
├── 文档
├── 下载
├── 音乐
└── 桌面

16 directories, 4 files
[wang@localhost ~]$

目标文件存在时,会询问是否覆盖。这是因为cp是cp -i的别名。目标文件存在时,即使加了-f标志,也还会询问是否覆盖。

[root@localhost wang]# cp -r wangql/rename.log test
cp:是否覆盖"test/rename.log"? y
[root@localhost wang]# cp -rf wangql/rename.log test
cp:是否覆盖"test/rename.log"? y
[root@localhost wang]#

文章作者: WangQingLei
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 WangQingLei !
 上一篇
cat命令 cat命令
cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上。
2021-08-16
下一篇 
linux-cd-pwd linux-cd-pwd
Linux cd(英文全拼:change directory)命令用于切换当前工作目录。 Linux pwd(英文全拼:print work directory) 命令用于显示工作目录。
2021-08-10
  目录