##diff,rsync
diff会对每个文件中的每一行都做比较,所以文件较多或者文件较大的时候会非常慢。 sort进行排序 rsync数据同步
run:
#my shell ls -la n1|sort ls -la n2|sort find n1 -printf "%P\n" | sort > file1 find n2 -printf "%P\n" | sort | diff file1 -result:
./a.sh drwxrwxr-x 2 zz zz 4096 Jun 7 18:16 . drwxrwxr-x 4 zz zz 4096 Jun 7 21:27 … -rw-rw-r-- 1 zz zz 1069645 Jun 7 18:16 Python.docx -rw-rw-r-- 1 zz zz 1563846 Jun 7 18:16 xxLinux server.docx -rwxrw-r-- 1 zz zz 14168 Jun 7 18:16 Linux shell总结.docx -rwxrw-r-- 1 zz zz 18588 Jun 7 18:16 鸟哥的Linux私房菜.docx -rwxrw-r-- 1 zz zz 246381 Jun 7 18:16 鸟哥的Linux私房菜.pdf -rwxrw-r-- 1 zz zz 2482257 Jun 7 18:16 Linux server.docx -rwxrw-r-- 1 zz zz 3191299 Jun 7 18:16 linux_server.zip -rwxrw-r-- 1 zz zz 3355734 Jun 7 18:16 qt5_summary.zip -rwxrw-r-- 1 zz zz 3879281 Jun 7 18:16 qt blog.zip -rwxrw-r-- 1 zz zz 452501 Jun 7 18:16 Qt 模块讲解.zip -rwxrw-r-- 1 zz zz 609470 Jun 7 18:16 c++ primer.pdf -rwxrw-r-- 1 zz zz 767165 Jun 7 18:16 Linux server.pdf -rwxrw-r-- 1 zz zz 78653 Jun 7 18:16 c++ primer.docx total 17356 drwxrwxr-x 2 zz zz 4096 Jun 7 18:21 . drwxrwxr-x 4 zz zz 4096 Jun 7 21:27 … -rw-rw-r-- 1 zz zz 1069645 Jun 7 18:16 Python.docx -rw-rw-r-- 1 zz zz 1563846 Jun 7 18:16 xxLinux server.docx -rwxrw-r-- 1 zz zz 14168 Jun 7 18:16 Linux shell总结.docx -rwxrw-r-- 1 zz zz 2482257 Jun 7 18:16 Linux server.docx -rwxrw-r-- 1 zz zz 3191299 Jun 7 18:16 linux_server.zip -rwxrw-r-- 1 zz zz 3355734 Jun 7 18:16 qt5_summary.zip -rwxrw-r-- 1 zz zz 3879281 Jun 7 18:16 qt blog.zip -rwxrw-r-- 1 zz zz 452501 Jun 7 18:16 Qt 模块讲解.zip -rwxrw-r-- 1 zz zz 609470 Jun 7 18:16 c++ primer.pdf -rwxrw-r-- 1 zz zz 767165 Jun 7 18:16 Linux server.pdf -rwxrw-r-- 1 zz zz 78653 Jun 7 18:16 c++ primer.docx total 17092 13,14d12 < 鸟哥的Linux私房菜.docx < 鸟哥的Linux私房菜.pdf
*如果不想使用-printf,那么先进入各目录再find也行。
*将命令放进括号中执行是为了在子shell中切换目录,不用影响当前所在目录。(cd /home/zz) 下一句shell目录不变
cat file1 c++ primer.docx c++ primer.pdf Linux server.docx Linux server.pdf linux_server.zip Linux shell总结.docx Python.docx qt5_summary.zip qt blog.zip Qt 模块讲解.zip xxLinux server.docx 鸟哥的Linux私房菜.docx 鸟哥的Linux私房菜.pdf
#基本的功能 #-n为处理后的结果 -e -i直接修改文件的内容 #ia新增 d删除 s字符取代 c行取代 p行显示 sed -e '2a hello the worth' info.txt #在第二行插入 sed -e '1,2d' info.tixt #删除前面的两行 sed -e '1,2c no 1-2 lines' info.txt #行取代 sed -n '1,5p' indo.txt #显示1-5行 #数据的查找,格式'/内容/命令' sed -n '/材料/p' 1219 #查找显示行 sed -e '/材料/d' 1219 #查找删除行 sed -e 's/材料/彭小兰/g' 1219 #查找替换 #元字符集 ^开头 $结尾 .非换行字符 *零或多个字符 []指定的字符 [^]非指定的字符 \(..\)保存匹配字符 \<单词开头 \>单词结尾 x\{m\}m个x x\{m,\}m个以上x x\{m,n\}m-n个x sed -n 's/c++/c/p' file1#将file1中c++替换成c,-n,p只是输出变换的行 sed 's/c++/c/g' file1 #行所有的c++变成c sed 's/c++/c/2g' file1 #行从第二个开始的c++变成c sed '/^$/d' file1 #删除所有的空行 sed '2d' file1 #删除文件第二行 sed '2,$d' file1 sed '/^c++/' d file1 #删除c++开头的行 sed 's/c++/[&]/g' file1 #将成c++变成[c++] sed 's/\(c++\) \([a-Z]*.\)\(docx\)/\3 \2 \1/' file1#将c++和docx的位置对换 sed "s/$var/nihao" file sed -n '/c++/,/Linux/p' file1#打印c++和Linux之间的行 sed -n '1,/^Linux/p' file1#打印1到Linux的行 sed -n '/c++/,/Linux/s/$/nihao/p' file1 sed -e '1,5d' -e 's/test/check/' file sed '/test/r file' file1 sed -n '/test/w file' example sed '/^test/a\this is a test line' file#行下追加 sed '/^test/i\this is a test line' file#行上追加 sed -n 'p;n' test.txt #奇数行##日期
check_leap() { Y=`expr substr $1 1 4` r1=`expr $Y % 4` r2=`expr $Y % 100`: r3=`expr $Y % 400` if [ $r1 -eq 0 -a $r2 -ne 0 -o $r3 -eq 0 ] then FRUN="true" else FRUN="false" fi echo $FRUN } #----------------------------------------------------------------- # 获取月份最大日期 #方法1 get_mon_days() { Y=`expr substr $1 1 4` M=`expr substr $1 5 2` case "$M" in 01|03|05|07|08|10|12) days=31;; 04|06|09|11) days=30;; 02) _tmpStr=`check_leap "$Y"` #判断是否闰年 if [ "$_tmpStr" = "true" ] ; then #闰年 days=29 else days=28 fi ;; *) days=0 ;; esac echo $days } #--文件/etc/crontab -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该用户的计时器设置; -u<用户名称>:指定要设定计时器的用户名称。 minute hour day month week command 顺序:分 时 日 月 周
3,15 * * * * command//第三和15分钟执行一次 3,15 8-11 * * * command//8到11小时的第3和15分钟执行 3,15 8-11 */2 * * command//隔两天修改dns(ubuntu1604) sudo vim /etc/resolv.conf sudo /etc/init.d/networking restart
shell的编写 sudo sed -i '/^name/d' /etc/resolv.conf sudo sed -i '2a nameserver 114.114.114.114' /etc/resolv.conf sudo sed -i '2a nameserver 8.8.8.8' /etc/resolv.conf sudo /etc/init.d/networking restart