cat
檔案拼接
cat 1.txt 2.txt
擺脫多餘空白行
$ cat -s ss.tst
或者tr $ cat ss.tst |tr -s '\n'
顯示行號 -n
$ cat -n ss.tst
錄屏 $ script -t 2> timing.log -a output.session
exit結束
回放 $ scriptreplay timing.log output.session
xargs
單行->多行;多行->單行
stu2452@ubuntu:~/shell$ cat examle.txt 1
2 3 4 5 6
78 9
$ cat examle.txt | xargs
1 2 3 4 5 6 7 8 9
$ cat examle.txt | xargs -n3
1 2 3
4 5 6
7 8 9
指定分隔符 -d
$ echo "spamxspamxspamxspamxspam"|xargs -d x -n2
spam spam
spam spam
spam
xargs實現迴圈
$ ls "*.txt" | xargs -n1 -i{} mv {} {}.bak
結合find使用
$ find . -type f -name "*.bak" -print0 | xargs -0 rm -f
注:find的輸出做xarg輸入必須將-print0 與find結合使用,以字元null('\0')來分割輸出
統計c 原始碼中有多少行
$ find . -type f -name "*.c" -print0 | xargs -0 wc -l
34 ./jsq.c
26 ./hws.c
24 ./1.c
29 ./ww
www.c
29 ./huiwenshu.c
142 total
find
-atime 訪問時間
-mtime 內容修改時間
-ctime 元資料(許可權,屬主)改變
-7 7天內 -amin
7 7天前 -mmin
+7 超過7天 -cmin
比file1 修改時間更近
$ find . -type f -newer file1 -print
基於檔案大小
$ find . -type f -size +2k
基於許可權
$ find . -type f -perm 644
刪除匹配檔案
$ find . -type f -perm 644 -delete
結合 -exec
$ find . -type f -user root -exec chown dog {} \;
$ find . -type f -name "*.c" -exec cat {} \; > c_file.txt
tr 大寫轉小寫
#echo "hello world" | tr 'a-z' 'a-z'
加密,解密
$ echo "i am a student,do you want to make friend with me?" | tr 'a-za-z' 'n-za-mn-za-m'
v nz n fghqrag,qb lbh jnag gb znxr sevraq jvgu zr?
$ echo "v nz n fghqrag,qb lbh jnag gb znxr sevraq jvgu zr?" | tr 'a-za-z' 'n-za-mn-za-m'
i am a student,do you want to make friend with me?
製表符轉空格
$ tr '\t' ' '
刪除字元
$ cat 1_1.sh |tr -d 'echo'
壓縮字元 -s
$ echo "gun is not a linux." | tr -s ' '
gun is not a linux.
擦除多餘空格符
$ cat sum.txt | tr -s '\n'
字元類[:alnum:] :字母數字
[:alpha:] :字母
[:blank:] :
all horizontal whitespace
[:cntrl:] :控制(非列印)字元
[:digit:] :數字
[:graph:] :圖形字元
[:lower:] :小寫
[:print:] :可列印字元
[:punct:] :標點符號
[:space:] :空白字元
[:upper:] :大寫
[:xdigit:] :16進製制字元
[=char=]:
all characters which are equivalent to char
$ echo "hello world" | tr '[:lower:]' '[:upper:]'
hello world
校驗與核實md5sum
$ md5sum 1.c > 1.c.md5
$ md5sum -c 1.c.md5
1.c: ok 沒改變
對目錄進行校驗
$ md5deep -rl python ./python > dir_md5.txt
-r 使用遞迴方式
-l 使用相對路徑,預設絕對路徑
結合-exec 使用
$ find . type f -print0 | xargs -0 md5sum >> dir.txt
$ md5sum -c dir_md5.txt
sort
按數字排序輸出到檔案
$ sort -n 1.txt 2.txt -o sorted.txt
-r 逆序
-m 按月份
-m 合併兩個已經排序的檔案
$ sort 1.txt 2.txt |uniq 排序不重行
-c 檢查檔案是否排序 echo $? 檢視結果
-k 指定哪個鍵排序
$ sort -nrk 3 3.txt 按第三列按數字逆序
uniq
-c 統計重複行數目
-d 找出重複行
臨時檔案命名與隨機數
$ mktemp 建立臨時檔案
/tmp/tmp.fmbpewywo5
$ mktemp -d 建立臨時目錄
/tmp/tmp.nc9flswhtm
$ mktemp -u 不建立檔案,只取名字
/tmp/tmp.cbf2yy4duu
$ mktemp test.*** 根據模板建立檔名
test.7hv
分割檔案split
$ split -b 10k date.file 按位元組
$ split -l 10 date.file 按行數,10行
$ split -b 10k date.file -d -a 4 split_file
split_file0001 split_file0002 ...
$ csplit server.log /server/ -n 2 -s -f server -b "%02d.log" ; rm server00.log
根據拓展檔名切分檔案
$ var=
www.dlmu.edu.cn
$ echo $
www.dlmu.edu.cn
$ echo $
www.dlmu.edu
$ echo $
www$ echo $
dlmu.edu.cn
$ echo $ cn
rename
將檔名小寫便大寫
$ rename 'y/a-z/a-z/' *
把***檔案移到***目錄
find -type f -name "*.***" -exec mv {} ***/ \;
把所有檔案空格換為字元'_'
$ find . -type f -exec rename 's/ /_/g' {} \;
look and
roid 查字典是否拼寫錯誤
利用並行程序加速執行
#!/bin/bash
pidarray=()
for file in 1.sh 2.sh 1_1.sh 2_1.sh 6.sh do
md5sum $file &
pidarray+=("$!")
done
wait $
linux shell 指令碼攻略第3版 讀書筆記
第2章 1shell會擴充套件沒有引號或是出現在雙引號 中 的萬用字元。單引號能夠阻止shell擴充套件 txt,使得該字串能夠原封不動地傳給find命令。2find 命令 如果需要用到正規表示式使用單引號 例如 查詢 home slynux下面 所有以txt結尾的檔案並列印出來 find home...
Linux Shell指令碼攻略(三)
一.find命令 1.根據檔名或正規表示式匹配搜尋 2.基於目錄深度的搜尋 maxdepth mindepth 3.根據檔案型別搜尋 4.根據檔案時間搜尋 atime 訪問時間 mtime 修改時間 ctime 變化時間 eg find type f atime 7 print 最近7天訪問的檔案 ...
linux shell指令碼攻略 一
變數數 算 重定向陣列 別名終端資訊 日期相關 除錯指令碼 函式和引數 管道命令 字段分隔符和迭代器 迴圈算術比較 檔案系統相關測試 字串比較 日期內容 格式星期 a 例如 sat a 例如 saturday 月 b 例如nov b 例如 november 日 d 例如31 固定格式日期 d 例如 ...