文件查找-打包压缩-软连接-硬连接

find的用法
tar 的用法
gzip 用法
grep which whereis 用法
软连接 ln -s
硬连接 ln

grep which whereis 用法

grep也可以查看命令

grep 'root' /etc/passwd  #从/etc/passwd文件中过滤root字段
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

which查找命令

which ls
alias ls='ls --color=auto'
        /usr/bin/ls

whereis 查询命令和配置文件的位置

whereis rpm 
rpm: /usr/bin/rpm /usr/lib/rpm /etc/rpm /usr/share/man/man8/rpm.8.gz

find详解: 文件查找

语法:
# find 路径 条件 跟条件相关的操作符   [-exec 动作]
路径:
1.默认不写路径时查找的是当前路径.
2.加路径。
条件:
1.指定的名称  -name
2.文件类型  -type
3.权限
4.时间

按文件名 -name

find / -name *.txt        # 从根目录开始查找所有以 .txt 结尾的文件
# * 是一个通配符,需要熟练使用

按文件大小 -size

find / -size -5M   # 从根目录开始查找所有小于 5M 的文件
find / -size +5M   # 从根目录开始查找所有大于 5M 的文件
find / -size 5M    # 查找所有等于 5M 的文件
find / -size +5M -a -size -10M # 从根目录开始查找所有大于 5M 的文件 并且小于 10M 的文件
find / -size -1M -o -size +80M #查找/下面小于1M或者大于80M的文件
-a and
-o or

按时间查找 -atime 等等

按时间找(atime,mtime,ctime)
-atime = access访问时间
-mtime = modify改变时间  内容修改时间会改变
-ctime = change修改时间   属性修改时间会改变

-amin  #分钟
-mmin
-cmin
find / -atime +5 # 查看访问时间 5天 之前的
find / -ctime +5 # 查看属性修改 5天 之前的
find / -mtime +5 # 查看内容修改 5天 之前的
# 当然 这些也可以配合 -a -o 一起使用

find / -amin +1  # 查看访问时间在1分钟之前的
find / -mmin -2  # 修改内容时间在2分钟之内

按文件类型 -type

find / -type l # 查看根目录下的软硬连接文件
find / -type f # 查看根目录下的普通文件
find / -type d # 查看根目录下的目录类型文件
find / -type b # 查看根目录下的设备文件

按文件权限 -perm

find . -perm 644            #.是当前目录    精确查找644  
find /usr/bin  -perm -4000  #包含set uid
find /usr/bin  -perm -2000  #包含set gid
find /usr/bin  -perm -1000  #包含sticky

找到后处理的动作 ACTIONS

find /top -name *.txt -exec cp -rf {} ./b \; # 将 top 目录下所有的 .txt 文件移动到茨木了下的b文件夹中
find /top -name *.txt | grep -i cp -rf {} ./b   # 效果同上

-exec和xargs的区别

-exec:参数是一个一个传递的,传递一个参数执行一次命令。
xargs:将前一个命令的标准输出传递给下一个命令,作为它的参数转换成下一个命令的参数列表。
===============
1、exec 每处理一个文件或者目录,它都需要启动一次命令,效率不好; 
2、exec 格式麻烦,必须用 {} 做文件的代位符,必须用 \来转义; 作为命令的结束符,书写不便。 
3、xargs不能操作文件名有空格的文件;

综上,如果要使用的命令支持一次处理多个文件,并且也知道这些文件里没有带空格的文件,那么使用 xargs比较方便; 否则,就要用 exec了。

取反

find /top -name *.txt # 查询top目录下所有以 .txt 结尾的文件
find /top ! -name *.txt # 查询top目录下所有不以 .txt 结尾的文件

打包压缩

打包结尾

结尾:.tar.gz      .tar.bz2     .zip

打包

语法:
tar cvf xxxx.tar filename   被打包的文件 ...
c :create  创建
v :verbose 详细信息
f :file  指定文件

解包

tar xvf filename.tar [-C /root/Desktop]
x: extract  解压缩  解包
-C: 指定解包路径

tar 的用法

一般来说 一个tar就可以解决所有的事情了,不需要其他的工具

压缩

tar cvzf file.tar.gz 源文件
tar cvjf file.tar.bz2 源文件
tar cvJf file.tar.xz 源文件
z:表示gz压缩
j:表示bz2压缩
J:表示xz压缩

解压

tar xvzf file.tar.gz [-C 目标解压路径]
tar xvjf file.tar.bz2 [-C 目标解压路径]
tar xvJf file.tar.xz [-C 目标解压路径]

gzip和bzip2

# 压缩 
# 语法:
# 压缩:
	#gzip  源文件   #格式  file.gz结尾
	#bzip2 源文件   #格式  file.bz2结尾
# 解压语法:
#gunzip    解压文件
#bunzip2   解压文件

#gzip 	-d 解压文件  
#bzip2  -d 解压文件
-d:dicompress 解压缩

扩展–按时间创建目录或者文件

mkdir `date +%F`-upload
touch file-`date +%F`.txt
# 可以根据这个写一个脚本 每天可以自动生成一个对应的文件等等

软连接

文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。因此,无论打开哪一个文件,最终读取的都是文件B。这时,文件A就称为文件B的"软链接"(soft link)或者"符号链接(symbolic link)。

这意味着,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错:“No such file or directory”。这是软链接与硬链接最大的不同:文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode"链接数"不会因此发生变化。

创建软连接

第一种情况-普通文件

echo "你好呀" > hello.txt
ln -s hello.txt b.txt  # 这个的话 b.txt 是 hello.txt 文件的软连接 它们的inode 号虽然不同,但是 b.txt 依赖于 hello.txt 文件而存在的
cat hello.txt
你好呀
 ll -i hello.txt b.txt
 8410297 lrwxrwxrwx. 1 root root  9 98 20:01 b.txt -> hello.txt # 文件类型有个 l 表示连接   后面也有一个  b.txt -> hello.txt
8410273 -rw-r--r--. 1 root root 22 98 20:00 hello.txt
# 第一位是 inode号 是不一样的

# 删除 b.txt 文件是对 hello.txt 文件是没有影响的
rm -rf b.txt
cat hello.txt
你好呀

# 但是删除 hello.txt 文件是有影响的
rm -rf hello.txt
cat b.txt
cat: b.txt: 没有那个文件或目录

第二种情况 文件夹

mkdir w 

echo '你好呀' > ./w/hello.txt

ln -s w b

ll
lrwxrwxrwx. 1 root root  1 98 20:21 b -> w
drwxr-xr-x. 2 root root 23 98 20:19 w
# 可以看到b文件是w文件的软连接
cd b

ls

hello.txt

cat hello.txt
你好呀
# 当然删除文件的时候也根上面那个案例是一样的

硬连接

一般情况下,文件名和inode号码是"一一对应"关系,每个inode号码对应一个文件名。但是,Unix/Linux系统允许,多个文件名指向同一个inode号码。
这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件;但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为"硬链接"(hard link)。
最重要的是,硬连接不能对文件夹进行硬连接,只能对普通文件进行硬连接

创建硬连接

echo '你好呀' > hello.txt

ln hello.txt b.txt # 创建好硬连接,它们的 inode号是一样的

ll -i
8410273 -rw-r--r--. 2 root root 10 98 20:26 b.txt
8410273 -rw-r--r--. 2 root root 10 98 20:26 hello.txt

stat hello.txt
  文件:hello.txt
  大小:10              块:8          IO 块:4096   普通文件
设备:fd00h/64768d      Inode:8410273     硬链接:2
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:default_t:s0
最近访问:2023-09-08 20:26:04.250710399 +0800
最近更改:2023-09-08 20:26:04.250710399 +0800
最近改动:2023-09-08 20:26:06.140597110 +0800
创建时间:2023-09-08 20:26:04.250710399 +0800
# 可以看到上面的硬连接数为 2 一个是 hello.txt 本身 一个是 b.txt
# 因为它们都指向的同一个inode号 所以说 修改其中一个文件 其他的文件都会修改,
# 它们之中,无论删除哪一个文件都对其他文件都没有影响 只是少一个与inode号相连接的数量
# 当这个值减到0,表明没有文件名指向这个inode,系统就会回收这个inode号码,以及其所对应block区域。

面试:软链接和硬链接的区别:

  • 软链接可以跨文件系统,硬链接不可以;
  • 软链接可以对目录进行连接,硬链接不可以;
  • 删除源文件之后,软链接失效,硬链接无影响;
  • 软连接有不同的inode号,硬链接相同的inode号;
  • 两种链接都可以通过命令 ln 来创建;
  • ln 默认创建的是硬链接;
  • 使用 -s 参数可以创建软链接。
  • 删除软连接目录时,切记不要在目录名后面加/,否则会将目录中的文件删除

有一瞬间很希望耳机里的音乐化变成翻涌的浪花或者雷鸣淹没我 ​​​

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值