当前位置:   article > 正文

Linux之四:文件操作命令详解

Linux之四:文件操作命令详解
目录列表

cd

cd : change directory 改变目录

cd /dir : 切换到指定的目录中

注意:绝对路径和相对路径

cd /dir 和 cd dir 完全不同的,前者是根目录下找dir , 后者是在当前目录下找dir

cd .. : 切换到上一级目录

ls

ls - list directory contents

列出当前目录或指定的目录下所有文件

ls 直接查看当前目录下的文件

ls /dir : 查看指定目录下的文件

ls -a : 查询当前目录下所有的文件包括隐藏文件

ls -l dir : 查询列出指定目录dir 下所有文件的详细信息。

ll

等价于 ls -l

ll /usr 列出/usr 目录下文件信息

查看文件内容

cat filename : 查看指定文件的内容

head -5 filename : 查看指定文件中的前 5 行内容

tail -5 filename : 查看指定文件中的后 5 行内容

more filename : 分部分查看文件内容的。按百分比提示已经显示的内容,可以使用 空格键 来切换下一屏内容

删除文件

rm : remove files or directory 删除文件或目录

  1. [root@wang dir]# rm *.txt # 默认会提示删除,匹配,* 表示任意个任意字符
  2. rm: remove regular empty fileTest2.txt’? y
  3. rm: remove regular empty fileTest3.txt’? y
  4. rm: remove regular empty fileTest4.txt’? y
  5. rm: remove regular empty fileTest5.txt’? y
  6. [root@wang dir]# ls
  7. java Test2.java Test3.java Test4.java Test5.java x
  8. [root@wang dir]# rm -f *.java # -f force 强制无提示删除
  9. [root@wang dir]# ls

rm Test.java : 直接提示删除文件

rm -i Test.java :提示删除

rm -f Test.java : 无提示直接删除

rm -r dir : 递归删除目录。 删除目录 必须带 -r

rm -rf dir : 递归无提示直接删除目录

rm -rf * : 把当前目录下所有的文件和目录删除

创建文件、查看文件、复制文件、移动文件、重名文件、删除文件

创建目录:
  1. [root@zhangpeng opt]# mkdir zhang
  2. [root@zhangpeng opt]# ls
  3. rh zhang
  4. [root@zhangpeng opt]# cd zhang
  5. [root@zhangpeng zhang]# ls
  6. [root@zhangpeng zhang]# pwd
  7. /opt/zhang
  8. [root@zhangpeng zhang]#

上面只能创建一级目录,如果需要创建多级目录,使用选项 -p

  1. [root@zhangpeng zhang]# mkdir -p a/b/c ## 注意:多级目录 使用 -p
  2. [root@zhangpeng zhang]# ls
  3. a Test.java
  4. [root@zhangpeng zhang]# ls a
  5. b
  6. [root@zhangpeng zhang]# ls a/b
  7. c
  8. [root@zhangpeng zhang]#
创建文件:
  1. [root@zhangpeng zhang]# touch Test.java ## 创建一个空的文件,命名为 Test.java
  2. [root@zhangpeng zhang]# ls
  3. Test.java

touch命令有两个功能:

一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;

二是用来创建新的空文件。

touch:创建共10个文件

  1. touch java{1..10}
  2. [root@zhangpeng wang]# touch user{1..10}.java //创建多个文件,名字变量
  3. [root@zhangpeng wang]# ls
  4. a Test{2-10} user10.java user2.java user4.java user6.java user8.java
  5. dir Test.java user1.java user3.java user5.java user7.java user9.java
  6. [root@zhangpeng wang]#
文件复制

cp - copy files and directories

  1. [root@wang dir]# ls
  2. dir test Test.java
  3. [root@wang dir]# cp Test.java Test.txt 同目录下单文件复制
  4. [root@wang dir]# ls
  5. dir test Test.java Test.txt
  1. [root@wang dir]# ls dir
  2. [root@wang dir]# cp *Test* dir # 拷贝当前目录下文件名包含Test 字符串文件 复制到 dir 目录下

目录拷贝:

  1. [root@wang dir]# ls dest
  2. [root@wang dir]# cp dir dest # 默认 文件夹不能直接复制的
  3. cp: omitting directory ‘dir
  4. [root@wang dir]# cp -r dir dest # 使用-r 拷贝。表示递归拷贝
  5. [root@wang dir]# ls dest
文件移动

mv - move (rename) files

当前目录下的文件重命名,不能实现文件夹的重命名

移动文件或多个文件到指定目录下

移动目录或多个目录到指定目录下

  1. [root@wang dir]# ls
  2. dest dir test Test2.jva Test3.jva Test4.jva Test5.jva Test.java Test.txt
  3. [root@wang dir]# mv Test.txt TT.txt # 重命名 当前目录下做的文件移动
  4. [root@wang dir]# ls
  5. dest dir test Test2.jva Test3.jva Test4.jva Test5.jva Test.java TT.txt
  6. [root@wang dir]# mkdir a
  7. [root@wang dir]# ls
  8. a dest dir test Test2.jva Test3.jva Test4.jva Test5.jva Test.java TT.txt
  9. [root@wang dir]# mv *.jva a # 把指定后缀的类型文件 全部移动到指定的目录 a 下
  10. [root@wang dir]# ls
  11. a dest dir test Test.java TT.txt
  12. [root@wang dir]# ls test
  13. Test.java
  14. [root@wang dir]# mv test dest # 把目录test 直接整个移动到目录 dest下
  15. [root@wang dir]# ls
  16. a dest dir Test.java TT.txt
  17. [root@wang dir]# ls dest
  18. dir test
文件重命名

rename

rename old new filename : 重命名文件或文件夹(目录)

old 表示原文件名中包含的字符串

new 表示更换后的字符串

filename 表示原有文件名

  1. [root@wang dir]# ls
  2. dest dir myfile.txt T.java TT.txt xyz
  3. [root@wang dir]# rename myfile testfile myfile.txt #把myfile.txt 文件名中的myfile字符串换为 testfile
  4. [root@wang dir]# ls
  5. dest dir testfile.txt T.java TT.txt xyz
  6. [root@wang dir]# rename dir newdir dir # 重命名文件夹
  7. [root@wang dir]# ls
  8. dest newdir testfile.txt T.java TT.txt xyz
  9. [root@wang dir]#
vi 文件编辑

vi(全称:Visual Editor)是一种基于命令行的文本编辑器

Vim 是一款基于终端的文本编辑器,它是vi(Visual Editor Improved)的改进版本,由 Bram Moolenaar 开发

三种模式:命令模式、底行模式、编辑模式

进入默认是命令模式,

Ctrl+u: 向上翻半屏 Ctrl+d:向下翻半屏 Ctrl+f: 向下翻一屏 Ctrl+b: 向前翻一屏

dd : 删除当前光标所在的一行

shift+d : 删除当前光标所在的行,光标之后的此行内容

切换到编辑模式:

  • 在当前光标位置前插入:i

    在当前光标位置后插入:a

    在当前行尾插入:A

    新建一行并插入:o(在当前行下方新建),O(在当前行上方新建)

  • 保存并退出:

    • 先按 ESC

      键回到命令模式,然后输入以下命令:

      • 保存并退出::wq
      • 强制保存并退出(即使无权限写入文件)::wq!
      • 不保存并退出::q!

编辑模式切换到命令模式:esc 进入命令模式

底行模式

命令模式进入底行模式:

在命令模式下,输入冒号:":"

:wq 保存并退出

:q 直接不保存退出

:q! 强制不保存退出

:set nu 设置行号的

:set nonu 取消行号的

:/string 搜索文件中的string 字符串,区分大小写的

替换指定字符串:%s/hadoop/mongoDB

注意:%s 后面都没有空格,如果有空格,表示匹配的字符

%s/String /int :因为有空格,所以匹配时,找到所有String后有空格才会被替换。

:?str 文件内容中搜索指定的字符串str ,n 向上指向下一个,shift+n 向后找下一个

文件搜索

NAME find - search for files in a directory hierarchy

SYNOPSIS find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

  1. [root@wang dir]# find /opt -name "*txt*" #在指定的目录下搜索 文件名中包含指定字符串的所有文件(包含目录及子目录)
  2. [root@wang dir]# find -name "*txt*" #在当前目录下搜索

按类型搜索 文件或目录 类型

  1. [root@wang dir]# find -type d # 搜索当前目录下所有的目录。 -type 表示文件类型 d表示目录 f 表示文件
  2. .
  3. ./dest
  4. ./dest/dir
  5. ./dest/test
  6. ./xyz
  7. ./newdir
  8. [root@wang dir]#
  9. [root@wang dest]# find -type f # 搜索所有文件 不包含目录
  10. ./dir/Test2.jva
  11. ./dir/Test3.jva
  12. ./dir/Test4.jva
  13. ./dir/Test5.jva

按类型和名字搜索

  1. [root@wang dir]# find -type d -name "*t*" # 按类型 找出名字中包含t的所有目录
  2. ./dest
  3. ./dest/test

按类型&名字&大小搜索

-size 表示按文件大小

+50M : 大于50M

50M : 等于50M

-50M : 小于50M

  1. [root@wang dir]# find /opt -type f -name "*.rpm" -size +50M
  2. /opt/soft/jdk-11.0.12_linux-x64_bin.rpm
  3. /opt/soft/mysql/mysql-community-server-8.0.26-1.el7.x86_64.rpm
  4. /opt/soft/mysql/mysql-community-test-8.0.26-1.el7.x86_64.rpm

按大小 字节来搜索,注意使用 c

  1. [root@wang dir]# find -type f -size 8c # 搜索文件大小正好是8字节的文件
  2. ./dest/dir/Test.java
  3. ./dest/dir/Test.txt

find -type f -size 2 : 注意:没有指定单位的,默认0.5k , 默认单位是 b。

-size +2b: 一个b 表示512字节,2b 表示1024个字节

linux下的find命令用来查找文件,-size 表示大小 -size n[cwbkMG] File uses n units of space. The following suffixes can be used:

  1. b for 512-byte blocks (this is the default if no suffix is used)
  2. c for bytes
  3. w for two-byte words
  4. k for Kilobytes (units of 1024 bytes)
  5. M for Megabytes (units of 1048576 bytes)
  6. G for Gigabytes (units of 1073741824 bytes)
文件属性

stat filename 查看文件详细属性

  1. [root@zhangpeng mydir]# stat Test.java
  2. File: ‘Test.java’
  3. Size: 106 Blocks: 8 IO Block: 4096 regular file
  4. Device: 803h/2051d Inode: 3658000 Links: 1
  5. Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
  6. Context: unconfined_u:object_r:usr_t:s0
  7. Access: 2021-08-14 17:56:52.709614840 +0800
  8. Modify: 2021-08-14 17:56:52.709614840 +0800
  9. Change: 2021-08-14 17:56:52.710614834 +0800
  10. Birth: -

- File:显示文件名 - Size:显示文件大小 - Blocks:文件使用的数据块总数 - IO Block:IO块大小 - regular file:文件类型(常规文件) - Device:设备编号 - Inode:Inode号 - Links:链接数 - Access:文件的权限 - Gid、Uid:文件所有权的Gid和Uid。

Linux下的三个时间:

  1. Access Time:简写为atime,表示文件的访问时间。当文件内容被访问时,更新这个时间

  2. Modify Time:简写为mtime,表示文件内容的修改时间,当文件的数据内容被修改时,更新这个时间。

  3. Change Time:简写为ctime,表示文件的状态时间,当文件的状态被修改时,更新这个时间,例如文件的链接数,大小,权限,Blocks数。

文件统计

1)du 查看指定文件大小

查看指定文件的字节数 -b

  1. [root@zhangpeng mydir]# du -b Test.java
  2. 106 Test.java

查看指定文件的大小 默认为 k

  1. [root@zhangpeng mydir]# du -k Test.java ## 等价于 du Test.java
  2. 4 Test.java
  1. [root@zhangpeng mydir]# du -h Test.java ## -h 使用易读的方式显示大小 带单位
  2. 4.0K Test.java

注意和提醒: 默认单位K。如果文件大小不足4K时,显示4K 。

原因是:占用空间取决于文件系统的块(block)的大小,linux一般默认是4k(4096) ,因此,一个大小为1个字节的文件,最小也要占用4k

  1. [root@zhangpeng mydir]# du -sh /usr ### -s 表示--summarize,仅列出总量,而不列出每个目录和文件的大小
  2. 3.8G /usr

2)wc (Word Count)

wc - print newline, word, and byte counts for each file

命令的功能为统计指定文件中的字节数、字数、行数 -c 统计字节数。 -l 统计行数。 -m 统计字符数。这个标志不能与 -c 标志一起使用。 -w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。 -L 打印最长行的长度

  1. [root@zhangpeng mydir]# wc Test.java
  2. 7 11 106 Test.java
  3. [root@zhangpeng mydir]# wc -c Test.java
  4. 106 Test.java
  5. [root@zhangpeng mydir]# wc -w Test.java
  6. 11 Test.java
  7. [root@zhangpeng mydir]# wc -l Test.java
  8. 7 Test.java
  9. [root@zhangpeng mydir]# wc -L Test.java
  10. 43 Test.java
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/214261
推荐阅读
相关标签
  

闽ICP备14008679号