Shell中的常用命令
1.cat命令不仅可以读取文件、拼接数据,还能够从标准输入中读取
echo "sss" | cat - out.txt
“-”被作为stdin文本的文件名
2.压缩相邻的空白行
cat -s 1.txt
3.用cat命令的-T选项能够将制表符标记成^T
cat -T 1.txt
4.find命令的工作方式如下:沿着文件层次结构向下遍历,匹配符合条件的文件,执行相应的操作。默认打印出文件和目录
find . -print
.指定当前目录,”. . “指定父目录。print选项使用\n
(换行符)分隔输出每一个文件或目录名。而-print0
使用空字符‘\0
’来分隔。
5.根据文件名或正则表达式进行搜索
find a/a -name '*.txt' -print
6.find命令支持逻辑操作符。-a
和-and
选项可以执行逻辑与操作,-o
和-or
可以执行逻辑或操作。
7.否定参数
find . ! -name "*.txt" -print
8.根据文件类型搜索
只列出所有的目录(包括子目录)
find . -type d -print
列出普通文件
find . -type f -print
9.根据文件的时间戳进行搜索,Unix/Linux文件系统中的每一个文件都有3种时间戳。
访问时间(-atime
):用户最近一次访问文件的时间。
修改时间(-mtime
):文件内容最后一次被修改的时间。
变化时间(-ctime
):文件元数据(例如权限或所有权)最后一次改变的时间
打印出在最近7天内被访问过的所有文件。
find . -type f -atime -7 -print
打印出恰好在7天前被访问过的所有文件。
find . -type f -atime 7 -print
打印出访问时间超过7天的所有文件。
find . -type f -atime +7 -print
10.–newer选项可以指定一个用于比较修改时间的参考文件,然后找出比参考文件更新的(更近的修改时间)所有文件。
找出比1.txt修改时间更近的所有文件
find . -type f -newer 1.txt -print
11.基于文件权限和所有权,打印出权限为644的文件
find . -type f -perm 755 -print
12.删除匹配的文件
find命令的-delete选项可以删除所匹配的文件。
find . -type f -name "*.session" -delete
13.xargs,将多行输入转换成多行输出
cat 1.txt | xargs
14.xargs的-n选项可以限制每次调用命令时用到的参数个数。
cat 1.txt | xargs -n 3
分隔多行,每行3个元素。
15.统计程序文件的行数。
find -type f -name "*.sh" -print0 | xargs -0 wc -l
16.要将输入中的字符由大写转换成小写
echo "DDFFRGVD df" | tr 'A-Z' 'a-z'
17.在tr中利用集合的概念,可以轻松地将字符从一个集合映射到另一个集合中。
echo 12345 | tr '0-9' '9876543210'
——87654 #已加密
18.tr命令可以用来加密。
echo ge pnzr, ge fnj, ge pbadhrerq. | tr 'a-zA-Z' 'n-za-mN-ZA-M'
19.tr有一个选项-d,可以通过指定需要被删除的字符集合,将出现在stdin中的特定字符清除掉:
echo "Hello 123 world" | tr -d '0-9'
——Hello world
20.将不在0-9字符替换成空格
echo hello 1 char 2 next 4 | tr -c '0-9' ' '
—— 1 2 4
21.压缩字符,tr命令能够完成很多文本处理任务。例如,它可以删除字符串中重复出现的字符。基本实现形式如下
echo "a ddd re ?cd d0" | tr -s ' '
——a ddd re ?cd d0
23.校验和程序用来从文件中生成相对较小的唯一密钥。
24.按照数字顺序排序
sort -n 1.txt
按照逆序排序:
sort -r 1.txt
25.有时文本中可能会包含一些像空格之类的多余字符。如果需要忽略标点符号并以字典排序,可以使用:
sort -bd unsorted.txt
其中,选项-b用于忽略文件中的前导空白行,选项-d用于指明以字典序进行排序。
26.uniq命令可以从给定输入中找出唯一的行,报告或删除那些重复的行,只能用于排过序的数据。
uniq sorted 1.txt
sort 1.txt | uniq
27.只显示唯一的行(在输入文件中没有重复出现过的行)
uniq -u 1.txt
28.统计各行在文件中出现的次数
sort 1.txt | uniq -c
29.找出重复的行
sort 1.txt | uniq -d
30.通过指定分割大小,可以将100KB的文件分成一系列10KB的小文件。在split命令中,除了k(KB),我们还可以使用M(MB)、G(GB)、c(byte)和w(word)。
split -b 2k timing.log
31.借助%操作符可以从name.extension这种格式中提取name部分。
file_jpg="sample.jpg"
name=${file_jpg%.*}
echo File name is: $name
——File name is: sample
32.#操作符可以提取出扩展名
extension=${file_jpg#*.}
echo Extension is: jpg
——Extension is: jpg
33.匹配:m// (可以省略m,直接写成/regexp/)
替换:s///
转化:tr///
34.将后缀修改:
rename -n 's/png/PNG/' *.png
将大写改为小写
rename 'y/A-Z/a-z/'
去掉文件后缀名:
rename 's/\.jpg$//' *.jpg