find

查找大于200M文件,如果有子文件,那么子文件也会显示

  1. find . -type f -size +200M

查找当前目录下大于200M文件

  1. find . -maxdepth 1 -type f -size +200M

查找当前目下的文件夹

dir=/data/mdatacenter/data/6077e1b0d25ef32db748af78

  1. root@iZ2ze1l5ld7n18s5p8meceZ:~# find $dir -maxdepth 1 -type d
  2. /data/mdatacenter/data/6077e1b0d25ef32db748af78
  3. /data/mdatacenter/data/6077e1b0d25ef32db748af78/202108
  4. /data/mdatacenter/data/6077e1b0d25ef32db748af78/202105
  5. /data/mdatacenter/data/6077e1b0d25ef32db748af78/202106
  6. /data/mdatacenter/data/6077e1b0d25ef32db748af78/202103
  7. /data/mdatacenter/data/6077e1b0d25ef32db748af78/202107

查找当前目录下的文件夹,不含当前的目录

dir=/data/mdatacenter/data/6077e1b0d25ef32db748af78

  1. root@iZ2ze1l5ld7n18s5p8meceZ:~# find $dir -maxdepth 1 -type d | grep -v $dir$
  2. /data/mdatacenter/data/6077e1b0d25ef32db748af78/202108
  3. /data/mdatacenter/data/6077e1b0d25ef32db748af78/202105
  4. /data/mdatacenter/data/6077e1b0d25ef32db748af78/202106
  5. /data/mdatacenter/data/6077e1b0d25ef32db748af78/202103
  6. /data/mdatacenter/data/6077e1b0d25ef32db748af78/202107

取出文件名并排序

dir=/data/mdatacenter/data/6077e1b0d25ef32db748af78

  1. # find -printf "%f\n" %f: 获取文件名,当前的文件夹也会提取文件名
  2. root@iZ2ze1l5ld7n18s5p8meceZ:~ find $dir -maxdepth 1 -type d -printf "%f\n" | grep -v $(basename $dir)$ | sort
  3. 202103
  4. 202105
  5. 202106
  6. 202107
  7. 202108
  8. # find -printf "%P\n" %p: 获取文件名,当前的文件夹名称是空
  9. root@iZ2ze1l5ld7n18s5p8meceZ:~ find $dir -maxdepth 1 -type d -printf "%P\n" | grep -v ^$
  10. 202108
  11. 202105
  12. 202106
  13. 202103
  14. 202107
  15. # sed
  16. root@iZ2ze1l5ld7n18s5p8meceZ:~ find $dir -maxdepth 1 -type d | grep -v $dir$ | sed "s#$dir/##g" | sort
  17. 202103
  18. 202105
  19. 202106
  20. 202107
  21. 202108
  22. # awk
  23. root@iZ2ze1l5ld7n18s5p8meceZ:~ find $dir -maxdepth 1 -type d | grep -v $dir$ | awk -F/ '{print $NF}' | sort
  24. 202103
  25. 202105
  26. 202106
  27. 202107
  28. 202108
  29. # basename
  30. root@iZ2ze1l5ld7n18s5p8meceZ:~ for x in $(find $dir -maxdepth 1 -type d | grep -v $dir$ | sort);do basename $x;done
  31. 202103
  32. 202105
  33. 202106
  34. 202107
  35. 202108
  36. # xargs
  37. root@iZ2ze1l5ld7n18s5p8meceZ:~ find $dir -maxdepth 1 -type d | grep -v $dir$ | xargs -I{} basename {} | sort
  38. 202103
  39. 202105
  40. 202106
  41. 202107
  42. 202108

ls

默认是安装文件名称升序排列

按照文件大小降序排列

  1. ls -S

按照文件大小升序排列

  1. 升序
  2. ls -lSr

按照文件的时间降序排列

  1. ls -t

按照文件的时间降序排列

  1. ls -tr

du 对目录排序

对目录大小排序, 取前三个

  1. du -s * | sort -nr | head -3

按照指定单位大小对当前的文件和目录大小排序, 取前三个

  1. 1.字节
  2. du -b * | sort -nr | head -3
  3. 2.k
  4. du -k * | sort -nr | head -3
  5. 3.M
  6. du -m * | sort -nr | head -3
  7. 4.自定义10M
  8. du -B 10M * | sort -nr | head -3
  9. 4.自定义G
  10. du -B 1G * | sort -nr | head -3

uniq去重,必须要先对文本进行排序

  1. # 未排序
  2. sunzhengbo cat /etc/passwd | cut -d':' -f7 | uniq
  3. /bin/zsh
  4. /usr/bin/nologin
  5. /usr/bin/git-shell
  6. /bin/zsh
  7. # 已排序
  8. sunzhengbo cat /etc/passwd | cut -d':' -f7 | sort | uniq
  9. /bin/zsh
  10. /usr/bin/git-shell
  11. /usr/bin/nologin
  12. # 统计重复项的个数
  13. sunzhengbo cat /etc/passwd | cut -d':' -f7 | sort | uniq -c
  14. 2 /bin/zsh
  15. 1 /usr/bin/git-shell
  16. 14 /usr/bin/nologin

sort 排序

-u 去除重复行

➜  sunzhengbo cat /etc/passwd | cut -d':' -f7 | sort -u
/bin/zsh
/usr/bin/git-shell
/usr/bin/nologin

-n 按数字升序排列

-r 反向排序

-k 按序列排序,k后面可以指定多个列,使用逗号分隔

# 升序
➜  os ls -l | sort -n -k5
total 7780284
-rwxr--r-- 1 sunzhengbo sunzhengbo  711983104 Dec  5  2020 archlinux-2020.09.01-x86_64.iso
-rwxr--r-- 1 sunzhengbo sunzhengbo 1261371392 Aug 28 10:22 ubuntu-20.04.3-live-server-amd64.iso
-rwxr--r-- 1 sunzhengbo sunzhengbo 2573096960 May 14 22:31 manjaro-xfce-21.0.4-210506-linux510.iso
-rwxr--r-- 1 sunzhengbo sunzhengbo 3420557312 Nov 29  2020 cn_windows_7_professional_with_sp1_x64_dvd_u_677031.iso

# 降序
➜  os ls -l | sort -nr -k5
-rwxr--r-- 1 sunzhengbo sunzhengbo 3420557312 Nov 29  2020 cn_windows_7_professional_with_sp1_x64_dvd_u_677031.iso
-rwxr--r-- 1 sunzhengbo sunzhengbo 2573096960 May 14 22:31 manjaro-xfce-21.0.4-210506-linux510.iso
-rwxr--r-- 1 sunzhengbo sunzhengbo 1261371392 Aug 28 10:22 ubuntu-20.04.3-live-server-amd64.iso
-rwxr--r-- 1 sunzhengbo sunzhengbo  711983104 Dec  5  2020 archlinux-2020.09.01-x86_64.iso

tac 按行反序输出

➜  os ll
total 7.5G
-rwxr--r-- 1 sunzhengbo sunzhengbo 679M Dec  5  2020 archlinux-2020.09.01-x86_64.iso
-rwxr--r-- 1 sunzhengbo sunzhengbo 3.2G Nov 29  2020 cn_windows_7_professional_with_sp1_x64_dvd_u_677031.iso
-rwxr--r-- 1 sunzhengbo sunzhengbo 2.4G May 14 22:31 manjaro-xfce-21.0.4-210506-linux510.iso
-rwxr--r-- 1 sunzhengbo sunzhengbo 1.2G Aug 28 10:22 ubuntu-20.04.3-live-server-amd64.iso
➜  os ll | tac
-rwxr--r-- 1 sunzhengbo sunzhengbo 1.2G Aug 28 10:22 ubuntu-20.04.3-live-server-amd64.iso
-rwxr--r-- 1 sunzhengbo sunzhengbo 2.4G May 14 22:31 manjaro-xfce-21.0.4-210506-linux510.iso
-rwxr--r-- 1 sunzhengbo sunzhengbo 3.2G Nov 29  2020 cn_windows_7_professional_with_sp1_x64_dvd_u_677031.iso
-rwxr--r-- 1 sunzhengbo sunzhengbo 679M Dec  5  2020 archlinux-2020.09.01-x86_64.iso
total 7.5G

rev 按字符反序输出

使用示例:
➜  os echo 'shell' | rev
llehs

应用场景:获取每行文本最后6个字符
➜  os ll | awk 'NR>1{print $NF}'
archlinux-2020.09.01-x86_64.iso
cn_windows_7_professional_with_sp1_x64_dvd_u_677031.iso
manjaro-xfce-21.0.4-210506-linux510.iso
ubuntu-20.04.3-live-server-amd64.iso
➜  os ll | awk 'NR>1{print $NF}' | rev | cut -c -6 | rev
64.iso
31.iso
10.iso
64.iso