百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

Linux文件操作(linux文件操作命令)

sinye56 2024-11-13 12:35 4 浏览 0 评论

学习脑图如下:


一,文件创建

touch

用法:touch [选项] 文件

-a 只更改访问时间
-d, --date=字符串 使用指定字符串表示时间而非当前时间
-m 只更改修改时间
-r, --reference=文件 使用指定文件的时间属性而非当前时间

[root@jiangfeng tmp]# touch 20190707

[root@jiangfeng tmp]# stat 20190707 
  File: "20190707"
  Size: 0             Blocks: 0          IO Block: 4096   普通空文件
Device: 803h/2051d    Inode: 261898      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-07-07 17:48:49.393662578 +0800
Modify: 2019-07-07 17:48:49.393662578 +0800
Change: 2019-07-07 17:48:49.393662578 +0800

[root@jiangfeng tmp]# touch -a 20190707 -t 201810101010

[root@jiangfeng tmp]# touch -m 20190707 -t 201901010101

[root@jiangfeng tmp]# stat 20190707 
  File: "20190707"
  Size: 0             Blocks: 0          IO Block: 4096   普通空文件
Device: 803h/2051d    Inode: 261898      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-10-10 10:10:00.000000000 +0800
Modify: 2019-01-01 01:01:00.000000000 +0800
Change: 2019-07-07 17:52:31.807663461 +0800

[root@jiangfeng tmp]# ll
总用量 0
-rw-r--r--. 1 root root 0 1月   1 2019 20190707
-rw-------. 1 root root 0 7月   6 23:16 yum.log

注:stat命令为查看文件的详细信息;

ll命令为’ls –l’的缩写,这里查看文件的日期为文件的修改信息。

[root@jiangfeng tmp]# touch jiangfeng
[root@jiangfeng tmp]# touch -d '2018-12-12 12:00' jiangfeng 
[root@jiangfeng tmp]# stat jiangfeng 
  File: "jiangfeng"
  Size: 0             Blocks: 0          IO Block: 4096   普通空文件
Device: 803h/2051d    Inode: 266037      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-12-12 12:00:00.000000000 +0800
Modify: 2018-12-12 12:00:00.000000000 +0800
Change: 2019-07-07 18:00:58.526669190 +0800

注:-d选项为修改文件的访问时间和修改时间


二,查看文件内容

1.cat命令

格式:cat –operation file

-n:显示行号

-A:显示控制字符,如换行符,制表符等( linux $ 和 Windows ^M$ )

2.tac 命令

一般查看小文件,从最后一行到第一行列出来

3.more和less命令

一般查看大文件,q退出查看,可以搜索,建议less命令

4.head 命令

默认查看文件前10行, head -n 15或head -15 表示查看前15行

5.tail命令

默认查看文件后10行, tail -n 15或tail -15 表示查看后15行; -f 表示动态查看

6.ldd命令

一般用来查看二进制的命令文件

[root@jiangfeng tmp]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
……
tcpdump:x:72:72::/:/sbin/nologin
oprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologin

[root@jiangfeng tmp]# tail -2 /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
oprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologin

[root@jiangfeng tmp]# head -2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

[root@jiangfeng tmp]# ldd /bin/vi
    linux-vdso.so.1 =>  (0x00007fff355d1000)
    libselinux.so.1 => /lib64/libselinux.so.1 (0x00000032e2a00000)
    libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00000032e3200000)
    libacl.so.1 => /lib64/libacl.so.1 (0x00000032e8e00000)
    libc.so.6 => /lib64/libc.so.6 (0x00000032e1200000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00000032e0e00000)
    /lib64/ld-linux-x86-64.so.2 (0x00000032e0a00000)
    libattr.so.1 => /lib64/libattr.so.1 (0x00000032e3600000)


三,文件的拷贝、移动、重命名、删除

1.cp(本地文件拷贝)

cp -operation 需要拷贝的文件 拷贝后的位置

-a 递归拷贝文件,包括目录及文件属性信息

-r 拷贝目录

-p 拷贝文件包含文件的属性信息

-v 显示拷贝过程信息

[root@jiangfeng tmp]# cp -a /tmp/ /root/
[root@jiangfeng tmp]# ls /root/
anaconda-ks.cfg  install.log  install.log.syslog  tmp


2.mv(移动或重命名文件)

1)移动文件用法(不同路径下)

mv 需要移动的文件 移动到新的路径下

2)重命名用法(相同路径下)

mv 原来文件的名字 新文件的名字

[root@jiangfeng tmp]# mv /root/file1 /tmp/    移动/root/file1文件到/tmp目录下
[root@jiangfeng tmp]# ls
20190707  file1  jiangfeng  yum.log
[root@jiangfeng tmp]# mv file1 test1        将/tmp目录下的file1文件重命名成test1
[root@jiangfeng tmp]# ls
20190707  jiangfeng  test1  yum.log


3.rm(删除命令)

用法:rm –operation file(directory)

-r 递归删除,一般用于删除目录
-f 直接删除,不提示


四,文件查找

1.查找命令

1)which:找出命令的路径

2)whereis:找出命令的路径以及文档手册信息

[root@jiangfeng tmp]# which df
/bin/df
[root@jiangfeng tmp]# whereis df
df: /bin/df /usr/share/man/man1/df.1.gz /usr/share/man/man1p/df.1p.gz


2.文件查找(find)

Linux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

find pathname -options [-print -exec -ok]

参数

- pathname  find命令查找的目录路径。"~"代表了你的$HOME目录。
- -print   find命令对匹配的文件输出到标准输出。
- -exec  find命令对匹配的文件执行该参数所给出的shell命令。
- -ok   和- exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的 shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

常用选项

-name  按照文件名查找文件。

-iname 'FILENAME':文件名匹配不区分大小写

-perm   按照文件权限来查找文件。

-user  按照文件属主来查找文件。

-type查找某一类型的文件,诸如:

  - b - 块设备文件。
  - d - 目录。
  - c - 字符设备文件。
  - p - 管道文件。
  - l - 符号链接文件。
  - f - 普通文件。
  
-mitime -n +n 按照文件的更改时间来查找文件,-n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。Find命令还有-atime和-ctime选项。

-size n[c]  查找文件长度为n块的文件,带有c时表示文件长度以字节计。

-prune 使用这一选项可以使find命令不在当前的目录中查找,如果同时使用了-depth选项,那么-prune选项将会被忽略。



-group  按照文件所属的组来查找文件。

-uid UID:根据UID查找

-gid GID:根据GID查找

-nogroup  查找无有效所属组的文件

-nouser  无效属主

-newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件。

-depth  查找文件时,首先查找当前目录的文件,然后再其子目录中查找。

-fstype  查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。

-mount  查找文件时不跨越文件系统mount点。

-follow  如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。

-cpio  对匹配的文件使用cpio命令,将这些文件备份到磁盘带设备中。

组合条件:
  -a:    -o:    -not:

示例:

  使用name选项

        find ~ -name "*.txt" -print

        find . -name "[A-Z]*" -print

        find . -name "[a-z][a-z][0-9][0-9]txt" -print

  使用perm选项

        find . -prem 755 -print

  忽略某个目录

        find /etc -name "/etc/yum" -prune  -o -print

  使用user和nouser选项

    find / -user test -print    

    find / -nouser -print

  使用group和nogroup选项

    find /home -group "test" -print

  按照更改时间查找文件

    find / -mtime -5 -print  #5天以内

    find / -mtime +3 -print  #3天之前

  

    find /etc -type d -print    #查找所有目录

    find . ! -type d -print    #查找除目录外的文件

  使用size选项

    find / -size +1M -print

    find / -size 100c -print    100字节大小

  使用depth

    find /etc -name "*.conf" -depth -print    #先匹配所有文件,再在子目录中查找

  使用mount选项

    find / -name "*.XC" -mount -print    #在当前的文件系统中查找文件。

  使用exec或ok来执行shell命令

    shell
    find /home/test -mtime +5 -exec rm -rf {} \;
    find /home/test -mtime 0 -exec cp -a {} /tmp/ \;
    

  xargs选项

    与-exec类似,xargs命令只有一个进程

    find / -type f -print | xargs file

    查找/var目录下属主为root并且属组为mail的所有文件
    find /var -user root -a -group mail

    2.查找/usr目录下不属于root,bin,或student的文件
    find /usr -not \( -user root -o -user bin -a -user student \)

    3.查找/etc目录下最近一周内内容修改过且不属于root及student用户的文件
    find /etc -mtime -7 -a -not \( -user root -o -user student \) 

    4.查找当前系统上没有属主或属组且最近1天内曾被访问过的文件,并将其属主属组修改为root
    find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root.root {} \;

    5.查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中
    find /etc -size +1M >> /tmp/etc.largefiles

    6.查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息
    find /etc -not -perm /222 -ls


五,文件打包压缩

1、常见的压缩与解压缩工具
    zip :兼容类unix与windows,可以压缩多个文件或目录。 unzip解压缩
    gzip :压缩单个文件,压缩率相对低,cpu开销相对低。 gunzip解压缩
    bzip2 :压缩单个文件,压缩率相对高,cpu开销相对高。 bunzip2解压缩
    xz :压缩单个文件,压缩率高,压缩时间相对长,解压速度快,cpu开销相对高。 unxz解压缩
2、工具的用法
① zip工具
选项:
    -r 递归压缩,压缩目录
压缩:
    zip  压缩后的文件  需要压缩的文件
    zip /home/backup_config.zip /tmp/file1 /etc/hosts
注意:zip压缩默认压缩后的格式就是.zip;当然也可以加后缀.zip,一般都加上
解压缩:
    -d 指定解压缩路径
    unzip  /home/backup_config.zip  解压到当前目录
    unzip /home/backup_config.zip  -d /tmp/test 解压到指定位置

② gzip工具
选项:
    -d 解压缩
    -r 递归压缩(目录)
压缩:
    gzip /tmp/dir1/file1 一次压缩一个文件
    gzip  file1.log file2.log  一次性压缩多个文件,一个一个压缩。
解压缩:
    gunzip 需要解压的文件
或者
    gzip -d 需要解压的文件
    gunzip file* 一次解压多个文件,*代表通配符;file*表示以file开头所有文件
③ bzip2工具
选项:
    -d 解压缩
压缩:
    bzip2 /home/backup_config.zip
解压缩:
    bunzip2 backup_config.zip.bz2
或者
bzip2 -d  backup_config.zip.bz2
④ xz工具
选项:
    -z 压缩,默认
    -d 解压缩  或者 unxz
压缩:
    xz  文件名
解压缩:
    unxz 文件名
或者
    xz -d 文件名


3.打包工具
tar 命令:可以将多个文件打包成一个并且压缩,很常用。
选项:
-c 打包
-z 调用gzip工具压缩
-j 调用bzip2工具压缩
-J 调用xz工具压缩
-v 显示详细信息
-f 指定包名
-x 解压
-C 指定解压路径
-r 读取追加文件
-t 列出或查看tar包内容
说明:以上选项前面的横岗"-"可以省略。
用法:
    tar 选项 打包压缩后的文件  需要打包压缩的文件
    zip 选项 压缩后的文件  需要压缩的文件
注意:  1.如果已经将文件压缩打包,那么就不能追加;如果只是打包就可以追加。  2.参数顺序需要注意,最好把-f参数放到所有参数后面。  3.当出现以下提示时,加一个大P参数解决。      tar: Removing leading `/' from member names

相关推荐

RHEL8和CentOS8怎么重启网络

本文主要讲解如何重启RHEL8或者CentOS8网络以及如何解决RHEL8和CentOS8系统的网络管理服务报错,当我们安装好RHEL8或者CentOS8,重启启动网络时,会出现以下报错:...

Linux 内、外网双网卡路由配置

1.路由信息的影响Linux系统中如果有多张网卡的情况下,如果路由信息配置不正确,...

Linux——centos7修改网卡名

修改网卡名这个操作可能平时用不太上,可作为了解。修改网卡默认名从ens33改成eth01.首先修改网卡配置文件名(建议将原配置文件进行备份)...

CentOS7下修改网卡名称为ethX的操作方法

?Linux操作系统的网卡设备的传统命名方式是eth0、eth1、eth2等,而CentOS7提供了不同的命名规则,默认是基于固件、拓扑、位置信息来分配。这样做的优点是命名全自动的、可预知的...

Linux 网卡名称enss33修改为eth0

一、CentOS修改/etc/sysconfig/grub文件(修改前先备份)为GRUB_CMDLINE_LINUX变量增加2个参数(net.ifnames=0biosdevname=0),修改完成...

CentOS下双网卡绑定,实现带宽飞速

方式一1.新建/etc/sysconfig/network-scripts/ifcfg-bond0文件DEVICE=bond0IPADDR=191.3.60.1NETMASK=255.255.2...

linux 双网卡双网段设置路由转发

背景网络情况linux双网卡:网卡A(ens3)和网卡B(...

Linux-VMware设置网卡保持激活

Linux系统只有在激活网卡的状态下才能去连接网络,进行网络通讯。修改配置文件(永久激活网卡)...

VMware虚拟机三种网络模式

01.VMware虚拟机三种网络模式由于linux目前很热门,越来越多的人在学习linux,但是买一台服务放家里来学习,实在是很浪费。那么如何解决这个问题?虚拟机软件是很好的选择,常用的虚拟机软件有v...

Rocky Linux 9/CentOS Stream 9修改网卡配置/自动修改主机名(实操)

推荐...

2023年最新版 linux克隆虚拟机 解决网卡uuid重复问题

问题描述1、克隆了虚拟机,两台虚拟机里面的ip以及网卡的uuid都是一样的2、ip好改,但是uuid如何改呢?解决问题1、每台主机应该保证网卡的UUID是唯一的,避免后面网络通信有问题...

Linux网卡的Vlan配置,你可能不了解的玩法

如果服务器上连的交换机端口已经预先设置了TRUNK,并允许特定的VLAN可以通过,那么服务器的网卡在配置时就必须指定所属的VLAN,否则就不通了,这种情形在虚拟化部署时较常见。例如在一个办公环境中,办...

Centos7 网卡绑定

1、切换到指定目录#备份网卡数据cd/etc/sysconfig/network-scriptscpifcfg-enp5s0f0ifcfg-enp5s0f0.bak...

Linux搭建nginx+keepalived 高可用(主备+双主模式)

一:keepalived简介反向代理及负载均衡参考:...

Linux下Route 路由指令使用详解

linuxroute命令用于显示和操作IP路由表。要实现两个不同子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该...

取消回复欢迎 发表评论: