Linux文件与目录相关操作(增删改查)

    xiaoxiao2022-07-05  165

    文章目录

    1、目录的增删改查2、目录/文件的复制、移动和删除以及目录的显示2.1目录的显示2.2目录或文件的复制2.3移除文件或目录2.4移动或更名文件与目录2.5获取文件名或是目录名 3、文件查找3.1 命令文件的存放路径查找3.2 普通文件的存放路径查找     在上一篇中了解了Linux的文件权限,更改文件权限的命令,了解了FHS标准目录结构,知道了不同目录下的数据文件的存放要求,本篇我们将学习如何具体去管理文件与目录。

    1、目录的增删改查

    针对目录本身有以下操作:

    【 增 】mkdir新建一个新的目录:mkdir,该命令有可选参数,运用 mkdir -p可以一次构建对层目录;mkdir -m 可以给目录赋予权限;

    【 删 】 rmdir删除一个空的目录:rmdir,安全考虑下,目录的删除需要一层一层的删除,并且被包含的目录中不包含目录或者文件;rm -r 目录名 命令可以将目录下所有东西都删除

    【 改】cd切换目录:cd,Change Directory 对于有执行权限的目录,都可以通过该命令切换进入该命令; 需要注意的是一些符号的使用意义:

    点号.一个点号代表此层目录两个点号…两个点号代表上一层目录-短号代表前一个工作目录~解析符号代表目前用户所在文件夹~用户名对应/home/用户名目录,代表某个用户的主文件夹 【 查 】pwd显示当前目录:pwd,Print Working Directory,该命令会显示完整路径;

    2、目录/文件的复制、移动和删除以及目录的显示

    2.1目录的显示

    ls,该命令有诸多参数提供不同的显示需求,不使用参数时,默认只会显示非隐藏文件,以文件名排序和以文件名代表的颜色显示(蓝色代表目录,白色代表文件);

    ls [-alrtAFR....] directory name

    以下列出一些常用参数,更全面的可以参考这篇博客ls命令完全参考

    -a显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出)-l除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出-r将文件以相反次序显示(原定依英文字母次序)-t将文件依建立时间之先后次序列出-A同 -a ,但不列出 “.” (目前目录) 及 “…” (父目录)-F在列出的文件名称后加一符号;例如可执行档则加 “*”, 目录则加 “/”-R若目录下有文件,则以下之文件亦皆依序列出-d仅显示目录名,而不显示目录下的内容列表。显示符号链接文件本身,而不显示其所指向的目录列表;-i显示文件索引节点号(inode)。一个索引节点代表一个文件;-C多列显示输出结果。这是默认选项;

    2.2目录或文件的复制

        文件与目录的复制使用同一个命令:cp(copy);由于文件权限与文件所属用户和用户组挂钩,因此不同的用户执行复制命令会有不一样的效果。     默认情况下,cp命令复制所得的目的文件或目录的所有者是命令操作者本身,而目的文件或目录的权限相对源文件也会有改变,通过该命令一些参数的使用,对这些改变可以实现一些控制,具体可总结为高级用户(eg:root)可以在复制的时候使用参数保留低级用户文件的所有属性,而低级用户拷贝高级用户的文件或目录时是文件的所有者和所有组信息不会改变,但是文件权限可以。

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

    2.3移除文件或目录

    rm [-fir] 文件或目录 -f:忽略不存在的文件,不会出现警告信息; -i:在删除前会询问用户是否操作; -r:递归删除,常用在目录的删除;注意与rmdir相区分;

        若删除文件名带有短号“-”,则使用rm ./文件名或者是使用两个短号的形式:rm - - 文件名的形式;

    2.4移动或更名文件与目录

    mv [-fiu] 原文件 目的文件:将原文件或目录改名为目的文件或目录 mv [-fiu] 原文件 目录 :将原文件移动到某一目录下;原文件可以是多个; -f:如果目标文件已存在,直接覆盖不询问; -i:目标文件存在,询问是否覆盖; -u:目标文件已存在且原文件比较新才会更新, 也即是如果移动文件到目录下时已有该文件会根据两个文件的新旧来决定是否需要移动

    2.5获取文件名或是目录名

    basename 完整路径:获取文件名 dirname 完整路径:获取目录名

    3、文件查找

        文件系统纷乱繁杂,很多时候我们只知道文件名但是不知道文件的具体位置,想对文件做出修改变很困难,利用文件查找命令可以解决这一问题。

    3.1 命令文件的存放路径查找

    在Linux系统中,一切命令也是文件,不同的版本可能拥有相同的命令但是命令文件的存放位置不同,在需要对命令文件进行修改时就可以利用以下命令查找具体命令的存放路径:

    which [-a] command : -a将所有由PATH目录中可以找到的命令均列出,没有该参数时,仅列出第一个被找到的命令名称。

    该命令是根据PATH环境变量所规范的路径去查找执行文件的文件名,对于bash的内置命令使用该命令是找不到相应文件的。

    3.2 普通文件的存放路径查找

    文件的查找与命令文件的查找不同,主要使用以下几种命令:

    whereis [-bmsu] 文件或目录名 locate [-ir] 关键字(可只使用文件的部分名称,类似模糊查询的概念)

    whereis 与locate两个查询命令查找Linux系统的一个数据库文件,该文件记录系统内的所有文件,其创建是默认每天执行一次,这两个查询命令查找该数据库文件,无需直接去硬盘中访问数据,速度很快,但是由于数据库文件的更新频率问题,如果系统中增删了某些文件,可能会造成查找结果的偏差。 数据库文件的存放路径:/var/lib/mlocate 解决数据库与磁盘不同步方案:利用updatedb命令手动更新数据库文件;

    find [PATH] [option][action]

    find查找命令可以实现很多更细致的查找但是由于find直接查找硬盘对于老旧的磁盘效率会比较低。 find可以实现的细致查找:

    时间参数:-atime n,-ctime n,-mtime n,newer file;文件属性参数:-uid n;-gid n;-user name;-group name;-nouser;-nogroup;文件权限与名称参数:-name,-size [±]SIZE,-type,-perm mode,-perm -mode,-perm +mode;组合命令:-exec command {},可以对查找后的文件执行command命令,例如find / -perm +7000 -exec ls -l {} 找到某个文件并将其列出来;
    最新回复(0)