shell学习一

发布时间:2021-08-03 22:12:58 阅读:1487次

 vim shell.txt

1 大家好
4 我是搞程序的
7 就是程序猿
9 好了
10 
 
1、如何在vim中删除空行
:g/^$/d
 
2、删除所有空白行(^是行的开始,\s*是零个或者多个空白字符;$是行尾)
:g/^\s*$/d
 
3、cat显示文件内容
cat -n 文件名,给文件编行号
cat -b 文件名,给文件编行号,但忽略空白行
cat -s 文件名,将连续的多行,替换为一行
cat -t 文件名,显示制表符
echo 'cc vv bb' | tr ' ' '\n'   #将横行变为竖行
ls |paste -d"" -    #将横行变为竖行
4、合并连接符,"-"
echo "hello the world" | cat - 文件名,那么hello the world将和文件的内容合并在一起
 
5、删除所有的空行
root@test:/home/test/shell# cat shell.txt|tr -s '\n'|cat -n
1 大家好
2 我是搞程序的
3 就是程序猿
4 好了
 
6、rename改名http://www.2cto.com/os/201201/117383.html
将.html改为.htm
root@test:/home/test# rename -f 's/.html/.htm/' 2.html
将.html去掉
root@test:/home/test# rename -f 's/.htm//' 1.htm
将文件名小写转大写
root@test:/home/test# rename 'y/a-z/A-Z/' *.sh
将当前目录的所有带有空格的文件夹中的空格改为_
test@test:~/桌面$ find . -type d -exec rename 's/_/ /g' {} \;
7、find使用
查找所有的sh文件,
root@test:/home/test# find . -name "*.sh" -exec ls -rlhta {} \;
-rw-r--r-- 1 test test 16K 10月 29 15:17 ./find_new.sh
-rw-r--r-- 1 test test 16K 10月 29 15:17 ./find_test.sh
-rw-r--r-- 1 test test 33K 10月 29 15:17 ./find-exec.sh
 
查找所有的sh文件,并备份
root@test:/home/test# find . -name "*.sh" -exec cp {} {}.bak \;
root@test:/home/test# ls
find-exec.sh      find_new.sh      find_test.sh
find-exec.sh.bak  find_new.sh.bak  find_test.sh.bak
 
查找所有的html文件并改为txt文件
root@test:/home/test# find . -name "*.html" -exec rename 's/html/txt/' {} \;
查找所有的txt文件并改为text文件,但是要确认比较好
root@test:/home/test# find . -name "*.txt" -ok rename 's/txt/text/' {} 
 
找到所有的.bak文件,并确认删除
root@test:/home/test# find . -name "*.bak" -ok rm {} \;
< rm ... ./find_new.sh.bak > ? y
< rm ... ./find-exec.sh.bak > ? y
< rm ... ./find_test.sh.bak > ? y
 
find查找
i、grep "$str" $filename
  
ii、echo|cat $str | grep 'str'
 
iii、从文件夹里面查询出包含字符串'test'的文件
grep 'test' ./*
 
iv、从文件夹中查询出符合的文件,再从这些文件中查找包含要找的字符串的文件
find -name "*.*" -exec grep --color -n "ceshi" {} \;
  
v、从文件夹中查询出符合的文件,再从这些文件中查找包含要找的字符串的文件,并显示文件名
find -name "*.php" -exec  grep --color -n "hello" -H  {} \;
find -name "*.php" |xargs  grep --color -n "hello" -H  {} \;
或者
find -name "*.php" -print | xargs grep --color '全文搜索关键字'
 
查找文件权限为777的文件
find . -name "*.php" -perm 777 -exec ls -alrht {} \;
查找所有者为test的文件
find . -name "*.php" -user test -exec ls {} \;
查找组名为root的文件
find . -name "*.php" -group test -exec ls {} \;
按文件大小来搜索
find . -name "*.php" -size +1000 -exec ls {} \;
按修改时间来搜索
find . -name "*.php" -mmin +30 -exec ls {} \;
忽略并搜索相关的文件
root@test:/home/test/shell/5、find查找# find . -path 'test' -a -prune -o -name "*.sh" -print
./find_new.sh
./find_test.sh
./test/find_new.sh
./test/find_test.sh
./test/find-exec.sh
./find-exec.sh
root@test:/home/test/shell/5、find查找# find . -path './test' -a -prune -o -name "*.sh" -print
./find_new.sh
./find_test.sh
./find-exec.sh
查找nouser与nogroup
find . -nouser -print
find . -nogroup -print
查找所有的非隐藏的文件
find . -maxdepth 1 -mtime -30 -type f ! -name ".*" -exec ls {} \;
指定depth
find . -maxdepth 1 -user "root"
查找所有的txt与html文件
test@test:~/桌面$ find . -type f \( -name "*.txt" -o -name "*.html" \)
./1.html
./1.txt
test@test:~/桌面$ find . -type f  -name "*.txt" -o -name "*.html"
./1.html
./1.txt
find利用正则
test@test:~/桌面$ find . -type f -regex ".*\(\.txt\|.html\)"
./1.html
./1.tx
 
查找所有扩展名不是.txt与.html的文件

test@test:~/桌面$ find . ! -name "*.txt" -a ! -name "*.html"
.
./chrome-pnhechapfaindjhompbnflcldabbghjo-Default.desktop
./1.sh
./qq2012-test.desktop
./1.txttxt

如有问题,可以QQ搜索群1028468525加入群聊,欢迎一起研究技术

支付宝 微信

有疑问联系站长,请联系QQ:QQ咨询
上一篇:shell学习二
下一篇:shell登录相关

转载请注明:shell学习一 出自老鄢博客 | 欢迎分享