cat
cat本身表示concatenate(拼接)
cat file1 file2 file3 ...
將標準輸入與另外乙個檔案資料結合在一起
echo 'text through stdin' | cat - file.txt
擺脫多餘的空白行
cat -s file.txt
將製表符顯示為^|
cat -t file.txt
顯示行號,如果要跳過空白行使用-b
cat -n file.txt
cat -nb file.txt 跳過空白行
find
列印檔案和目錄的列表
find . -print
find -name
find -iname 忽略大小寫
如果匹配多個條件,使用or
find . \(-name "*.txt" -o -name "*.pdf" \) -print ???????????????
匹配多個檔案型別
find . -regex ".*\(\.pdf\|\.txt\)$"
排除某些型別
find . ! -name "*.txt" -print
基於目錄深度的搜尋
find . -maxdepth 1 -name "f*" -print 指定深度以內的
find . -mindepth 2 -name "f*「 -print 指定目的深度,排除一些
-maxdepth - mindeptch 作為第三個引數出現,如果作為第四個引數,效率會降低
根據檔案型別進行搜尋
find . -type d -print 目錄
find . -type f -print 普通檔案
find . -type l -print 符號鏈結
c 字元裝置
b 塊裝置
s 套接字
p fifo
根據檔案時間進行搜尋
unix/linux檔案系統中的每乙個檔案都有三種時間戳
訪問時間(-atime): 使用者最近一次訪問的時間
修改時間(-mtime): 檔案內容最後一次唄修改的時間
變化時間(-ctime): 檔案元資料(例如許可權或所有權)最後一次改變的時間
單位是天,這些整數通常還帶有-或+:-表示小於,+表示大於。
列印最近7天內被訪問的所有檔案
find . -type f -atime -7 -print
列印出恰好在7天前被訪問過的所有檔案
find . -type f -atime 7 -print
列印出訪問時間超過7天的所有檔案
find . -type f -atime +7 -print
單位時間為分鐘的
-amin (訪問時間)
-mmin (修改時間)
-cmin (變化時間)
find 另乙個漂亮的特性是-newer引數,使用它可以比較時間戳比參考檔案更新的所有檔案
find . -type f -newer file.txt -print
基於檔案大小的搜尋
大於2k
find . -type f -size +2k
小於2k
find . -type f -size -2k
大小等於2k的檔案
find . -type f -size 2k
除k之外,還有其他檔案大小單元
b -塊 512位元組
c 位元組
w 字 2位元組
k 1024位元組
m 1024k
g 1024m
刪除所有匹配檔案
find . -type f -name "*.swp" -delete
基於檔案許可權和所有權的匹配
find . -type f -perm 644 -print
列印沒有設定好知執行許可權的檔案
find . -type f -name "*.php" ! -perm 644 -print
列印使用者擁有的檔案
find . -type f -user slynux -print
find借助-exec,執行其他命令
修改許可權
find . -type f -user root -exec chown slynux {} \;all_files.txt
將10天前的.txt檔案複製到old目錄中
find . -type f -mtime +10 -name "*.txt" -exec cp {} old \;
-exec 結合多個命令
-exec是單個命令的,不過可以使用乙個shell指令碼
-exec ./commands.sh -f server -b "%02d.log" ; rm server00.log
/server/ 用來匹配某一行,分割過程即從此處開始
表示根據匹配重複執行分割,直到檔案末尾為止。可以用的形式來指定分割執行的次數。
-s 使命令進入靜默模式,不列印其他資訊
-n指定分割後的檔名字尾的數字個數,例如01,02,03等。
-f 指定分割後的檔案字首(在上面的例子中,server就是字首)
-b 指定字尾格式。例如%02d.log,類似於c語言中的printf的引數格式。在這裡
檔名=字首+字尾=server + %02d.log
因為分割後的第乙個檔案沒有任何內容(匹配的單詞就位於檔案的第一行中),所以我們刪除了server00.log
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 命可以用來...