linux 常用命令学习记录

1 、rm -f *.sh
2、grep -rn "xian" * 查找文件内容包含xian的文件(注意:文件名有xian的不会查询出)
3、find . ! -name "*.sh"

find . -type d -name abc*
*.*:表示所有文件

find: paths must precede expression: abc2
解决方法:
-name 的匹配字符串一定要用单引号或双引号引住,防止以上问题发生。
find . -type d -name 'abc*' -exec rmdir{} ;找出当前目录下以abc开头的目录并删除

find . -type f ! -name "*.sh" | xargs grep -c "sh" 查找当前目录中后缀名不为sh,文件中包含sh的文件(文件名包含,文件中的内容也包含都能搜索出)
shell
{i%%.*}.#的用法需记住

${file#*/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}:删掉最后一个 / 及其左边的字符串:my.file.txt
${file#*.}:删掉第一个 . 及其左边的字符串:file.txt
${file##*.}:删掉最后一个 . 及其左边的字符串:txt
${file%/*}:删掉最后一个 / 及其右边的字符串:/dir1/dir2/dir3
${file%%/*}:删掉第一个 / 及其右边的字符串:(空值)
${file%.*}:删掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:删掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my

# 是 去掉左边(键盘上#在 $ 的左边)
%是去掉右边(键盘上% 在$ 的右边)
单一符号是最小匹配;两个符号是最大匹配
${file:0:5}:提取最左边的 5 个字节:/dir1
${file:5:5}:提取第 5 个字节右边的连续5个字节:/dir2

gcc
wc
dmesg
diff file1 file2 文本比较,会显示出数据不一致的行
sort -r(倒序排列)
uniq 可统计数据出现次数
join 吧有关联的两个文件中的数据合并到一起

awk [-F filed-separator] 'commands' file
awk [选项参数] 'script' var=value file(s)

awk 'pattern +action' filenames

commands=action=script
awk 默认空格分割
$0:整条记录
$1:当前行的第一个域
~ 表示模式开始。// 中是模式。
~相当于包含, !~相当于不包含

awk -f .awk脚本文件 file

清空文件的文本内容 #>1.txt

原文地址:https://www.cnblogs.com/xianhaiyan/p/6198247.html