linux命令学习记录

时间:2023-01-11 21:23:20

1、查看目录和文件大小

du -sh ./*

du -sh * | sort -nr            这个排序不正常都是因为-h参数的原因

du -s * | sort -nr | head      选出排在前面的10个

du -s * | sort -nr | tail      选出排在后面的10个

2、linux ls按文件大小排序

ls -Sl
其是按照由大到小排序,如果想要反过来,从小到大,那么用:
ls -Slr
再者,如果想要输入是按照“便于人类阅读的方式”,那么就再加一个-h,表示"--human-readable"
这样单位就是k或者M ,比较容易看清楚结果

3、tr 删除字符和替换字符,去重字符

用法:tr [选项]... SET1 [SET2]
从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。
 
  -c, -C, --complement        首先补足SET1
  -d, --delete            删除匹配SET1 的内容,并不作替换
  -s, --squeeze-repeats       如果匹配于SET1 的字符在输入序列中存在连续的重复,在替换时会被统一缩为一个字符的长度
  -t, --truncate-set1        先将SET1 的长度截为和SET2 相等
    --help             显示此帮助信息并退出
    --version           显示版本信息并退出
 
SET 是一组字符串,一般都可按照字面含义理解。解析序列如下:
 
  \NNN  八进制值为NNN 的字符(1 3 个数位)
  \\            反斜杠
  \a            终端鸣响
  \b            退格
  \f            换页
  \n            换行
  \r            回车
  \t            水平制表符
  \v            垂直制表符
  字符1-字符2       从字符1 到字符2 的升序递增过程中经历的所有字符
  [字符*]       在SET2 中适用,指定字符会被连续复制直到吻合设置1 的长度
  [字符*次数]     对字符执行指定次数的复制,若次数以 0 开头则被视为八进制数
  [:alnum:]     所有的字母和数字
  [:alpha:]     所有的字母
  [:blank:]     所有呈水平排列的空白字符
  [:cntrl:]     所有的控制字符
  [:digit:]     所有的数字
  [:graph:]     所有的可打印字符,不包括空格
  [:lower:]     所有的小写字母
  [:print:]     所有的可打印字符,包括空格
  [:punct:]     所有的标点字符
  [:space:]     所有呈水平或垂直排列的空白字符
  [:upper:]     所有的大写字母
  [:xdigit:]    所有的十六进制数
  [=字符=]      所有和指定字符相等的字符

尝试固定长度随机数
root@iZwz93telmwbh624e5zetqZ:~# head /dev/urandom | tr -dc A-Za-z0- | head -c
虽然help中说"--exclude"可以忽略文件和目录,可是实际测试中发现并不能忽略目录。所以,要排除目录,还得用“--exclude-dir”
例如:
grep -rn --exclude-dir=build_* --exclude-dir=kernel --exclude-dir=drivers --exclude=*.out 'abcdefg' .
grep --exclude-dir=".svn" U_BOOT_CMD * -nR --exclude="cscope.out" --exclude="tags"