第2章
1shell會擴充套件沒有引號或是出現在雙引號(")中
的萬用字元。單引號能夠阻止shell擴充套件*.txt,使得該字串能夠原封不動地傳給find命令。
2find 命令 如果需要用到正規表示式使用單引號''
例如:查詢/home/slynux下面 所有以txt結尾的檔案並列印出來
find /home/slynux -name '*.txt' -print
find命令有乙個選項-iname(忽略字母大小寫)
3–newer選項可以指定乙個用於比較修改時間的參考檔案,然後找出比參考檔案更新的(更
近的修改時間)所有檔案。
例如,找出比file.txt修改時間更近的所有檔案:
$ find . -type f -newer file.txt -print
find命令的時間戳處理選項有助於編寫系統備份和維護指令碼。
你必須以root使用者的身份執行find命令才能夠更改檔案或目錄的所有權。
4下列命令可以將10天前的 .txt檔案複製到old目錄中:
$ find . -type f -mtime +10 -name "*.txt" -exec cp {} old \;
5我們無法在-exec選項中直接使用多個命令。該選項只能夠接受單個命令,
不過我們可以耍乙個小花招。把多個命令寫到乙個shell 指令碼中( 例如
command.sh),然後在-exec中使用這個指令碼:
-exec ./commands.sh {} \;
6使用find命令的-print0選項生成以空字元('\0')作為分隔符的輸出,然後將其作為
xargs命令的輸入。
下列命令會查詢並刪除所有的.txt檔案:
$ find . -type f -name "*.txt" -print0 | xargs -0 rm -f
刪除以html結尾的10天前的檔案,包括帶空格的檔案:
find /usr/local/backups -name "*.html" -mtime +10 -print0 |xargs -0 rm -rfv
find /usr/local/backups -mtime +10 -name "*.html" -exec rm -rf {} \;
find -print 和 -print0的區別:
-print 在每乙個輸出後會新增乙個回車換行符,而-print0則不會。
第4章有一種值得推薦的做法是先使用不帶-i選項的sed命令,以確保正規表示式
沒有問題,如果結果符合要求,再加入-i選項將更改寫入檔案。另外,你也可
以使用下列形式的sed:
sed -i.bak 's/abc/def/' file
這時的sed不僅替換檔案內容,還會建立乙個名為file.bak的檔案,其中包含
著原始檔案內容的副本。
awk指令碼的結構如下:
awk 'begin pattern end' file
awk命令也可以從stdin中讀取輸入。
awk指令碼通常由3部分組成:begin、end和帶模式匹配選項的公共語句塊(common statement
block)。這3個部分都是可選的,可以不用出現在指令碼中。
awk以逐行的形式處理檔案。begin之後的命令會先於公共語句塊執行。對於匹配pattern
的行,awk會對其執行pattern之後的命令。最後,在處理完整個檔案之後,awk會執行end之後
的命令。
簡單的awk指令碼可以放在單引號或雙引號中:
awk 'begin end '
或者awk "begin end "
下面的命令會輸出檔案行數:
$ awk 'begin end ' filename
或者$ awk "begin end " filename
以下是awk可以使用的一些特殊變數。
nr:表示記錄編號,當awk將行作為記錄時,該變數相當於當前行號。
nf:表示字段數量,在處理當前記錄時,相當於字段數量。預設的字段分隔符是空格。
$0:該變數包含當前記錄的文字內容。
$1:該變數包含第乙個欄位的文字內容。
$2:該變數包含第二個欄位的文字內容。
awk預設讀取檔案中的所有行。如果只想讀取某一行,可以使用getline函式。
awk、grep和sed都可以根據條件列印部分行。最簡單的方法是使用grep列印匹配模式的行。
不過,最全能的工具還是awk。
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 例如 ...
Linux shell 指令碼學習攻略9
1 建立不可修改的檔案 chattr 能夠將檔案設定為不可修改。不過chattr能做的可不止這些。a 使用下列命令將乙個檔案設定為不可修改 b 這樣檔案file就變成為了不可修改狀態。來試試下面的命令 c 如果需要是檔案恢復可寫狀態,移除不可修改屬性即可 2 批量生成空白檔案 touch 命可以用來...