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]#