grep (過濾)
創新互聯建站成立與2013年,先為夏津等服務建站,夏津等地企業,進行企業商務咨詢服務。為夏津企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。
過濾需要的內容,
-v 需要排除的內容,
-i不分辨大小寫,
-n匹配的內容在其行首顯示行號,
-A (after)顯示匹配字符串及其后n行,
-B (before)顯示匹配字符串及其前n行,
-C(context)顯示匹配字符串
下邊是想湊字數的啦啦
find 命令的基本結構如下:
find [paths] [expression] [actions]
find 命令接受一個或多個 路徑 ( paths )作為搜索范圍,并在該路徑下 遞歸 地搜索。即檢索完指定的目錄后,還會對該目錄下的子目錄進行檢索,以及子目錄下的子目錄。。。直到到達目錄樹底部。
默認情況下(不帶任何搜索條件),find 命令會返回指定目錄下的 所有文件 ,所以常常需要通過特定的 expression 對結果進行 篩選 。
find 命令默認的 action 是將所有檢索結果打印至標準輸出。可以通過自定義 action ,讓 find 命令對搜索到的結果執行特定的操作。
這里先不做詳細解釋,簡單地測試下 find 命令:
find 命令中的 -name 選項可以根據文件名稱進行檢索( 區分大小寫 )。如需要忽略文件名中的大小寫,可以使用 -iname 選項。
-name 和 -iname 兩個選項都支持 wildcards 。如:
find /usr -name '*.txt' 查找 /usr 目錄下所有文件名以 .txt 結尾的文件
find /usr -name '????' 查找 /usr 目錄下所有文件名剛好為 4 個字符的文件
有些時候,你需要在搜索時匹配某個文件或目錄的 完整路徑 ,而不僅僅是匹配文件名??梢允褂? -path 或 -ipath 選項。
如查找 /usr 下所有文件名以 .txt 結尾的文件或目錄,且該文件的父目錄必須是 src 。可以使用以下命令:
find /usr -path '*/src/*.txt'
如果只想搜索得到文件 或 目錄,即不想它們同時出現在結果中。可以使用 -type 選項指定文件類型。
-type 選項最常用的參數如下:
find /usr -type d -name 'python*' 檢索 /usr 下所有文件名以 python 開頭的 目錄
find 命令支持 -empty 選項用來檢索 為空 的文件或目錄??瘴募次募餂]有任何內容,空目錄即目錄中沒有任何文件或子目錄。
find ~ -type d -empty 檢索用戶主目錄下所有的空目錄
find 命令也允許用戶對當前的匹配條件進行 “反義” (類似于 邏輯非 操作)。
如需要檢索 /usr 下所有文件名 不 以 .txt 為后綴的文件??梢允褂靡韵旅睿?/p>
find /usr -type f ! -name '*.txt'
也可以“翻轉”任何其他的篩選條件,如:
find /usr -type f ! -empty 檢索 /usr 下所有內容不為空的文件
為了檢索歸屬于特定用戶的文件或目錄,可以使用 -user 選項。
find / -type f -user starky 檢索根目錄下所有屬主為 starky 的文件
類似于 -user 選項, -group 選項則可以根據文件或目錄的 屬組 進行檢索。
有些時候,需要根據文件創建或修改的時間進行檢索。
Linux 系統中,與文件相關聯的時間參數有以下三種:
與此對應的是 find 命令中的 -mtime , -atime 和 -ctime 三個選項。
這三個選項的使用遵循以下示例中的規則:
find /usr -type f -mtime 2 檢索 /usr 下兩天前被修改過的文件
如果覺得 -mtime 等選項以 天 為單位時間有點長,還可以使用 -mmin , -amin , -cmin 三個選項:
find /usr -type f -mtime +50 -mtime -100 檢索 /usr 下 50 到 100 天之前修改過的文件
find /usr -type f -mtime 2 -amin 5 檢索 /usr 下兩天前被修改過且 5 分鐘前又讀取過的文件
-size 選項允許用戶通過文件大小進行搜索(只適用于文件,目錄沒有大小……)。
表示文件大小的單位由以下字符組成:
另外,還可以使用 + 或 - 符號表示 大于 或 小于 當前條件。
find / -size +1G 檢索文件大小高于 1 GB 的文件
find 命令可以使用 -perm 選項以文件權限為依據進行搜索。
如需要檢索 /usr 目錄下權限為 rwxr-xr-x 的文件,可以使用以下命令:
find /usr -perm u=rwx,g=rx,o=rx
搜索 /usr 目錄下所有權限為 r-xr-xr-x (即系統中的所有用戶都只有讀寫權限)的文件和目錄,可以使用以下命令:
find /usr -perm a=rx
很多時候,我們只想匹配文件權限的一個 子集 。比如,檢索可以直接被任何用戶執行的文件,即只關心文件的執行權限,而不用管其讀寫權限是什么。
上述的需求可以通過以下命令實現: find / -type f -perm /a=x
其中 a=x 前面的 / 符號即用來表示只匹配權限的某個子集(執行權限),而不用關心其他權限的具體設置。
-perm 選項也支持數字形式的文件權限標記。
find /usr -perm 644 搜索 /usr 目錄下權限為 644 (即 rwxr-xr-x )的文件
find 命令默認是以 遞歸 的方式檢索項目的,這有時候會導致得到的結果數量非常巨大??梢允褂? -maxdepth 限制 find 命令遞歸的層數。
find / -maxdepth 3 搜索時向下遞歸的層數最大為 3
在之前的例子中有出現多個搜索條件的 組合 以及對某個搜索條件的 反轉 。
實際上 find 命令支持 “and” 和 “or” 兩種邏輯運算,對應的命令選項分別是 -a 和 -o 。通過這兩個選項可以對搜索條件進行更復雜的組合。
此外還可以使用 小括號 對搜索條件進行 分組 。注意 find 命令中的小括號常需要用 單引號 包裹起來。因小括號在 Shell 中有特殊的含義。
如檢索 /usr 下文件名以 python 開頭且類型為目錄的文件
find /usr -type d -name 'python*'
該命令等同于:
find /usr -type d -a -name 'python*'
更復雜的組合形式如:
find / '(' -mmin -5 -o -mtime +50 ')' -a -type f
-delete 選項可以用來刪除搜索到的文件和目錄。
如刪除 home 目錄下所有的空目錄:
find ~ -type d -empty -delete
-exec 選項可以對搜索到的結果執行特定的命令。
如需要將 home 目錄下所有的 MP3 音頻文件復制到移動存儲設備(假設路徑是 /media/MyDrive ),可使用下面的命令:
find ~ -type f -name '*.mp3' -exec cp {} /media/MyDrive ';'
其中的 大括號 ( {} )作為檢索到的文件的 占位符 ,而分號( ; )作為命令結束的標志。因為分號是 Shell 中有特殊含義的符號,所以需要使用單引號括起來。
每當 find 命令檢索到一個符合條件的文件,會使用其完整路徑取代命令中的 {} ,然后執行 -exec 后面的命令一次。
另一個很重要的用法是,在多個文件中檢索某個指定的字符串。
如在用戶主目錄下的所有文件中檢索字符串 hello ,可以使用如下命令:
find ~ -type f -exec grep -l hello {} ';'
創建 Gzip 格式的壓縮文件的命令為: tar -czvf filename.tar.gz list of files
現在假設需要將用戶主目錄下所有的 MP3 文件添加到壓縮包 music.tar.gz 中,直觀的感覺是,其命令應為如下形式:
find ~ -type f -name '*.mp3' -exec tar -czvf music.tar.gz {} ';'
實際情況是,這樣得到的 music.tar.gz 其實只包含一個 MP3 文件。
原因是 find 命令 每次 發現一個音頻文件,都會再執行一次 -exec 選項后面的壓縮命令。導致先前生成的壓縮包被覆蓋。
可以先讓 find 命令檢索出所有符合條件的音頻文件,再將得到的 文件列表 傳遞給后面的壓縮命令。完整的命令如下:
find ~ -type f -name '*.mp3' -exec tar -czvf music.tar.gz {} +
如果想瀏覽搜索到的文件(目錄)的詳細信息(如權限和大小等),可以直接使用 -ls 選項。
find / -type file -size +1G -ls 瀏覽所有 1G 以上大小的文件的詳細信息
A Guide to the Linux “Find” Command
find 命令手冊 : man find
cat
/etc/inittab
這個簡單,輸出inittab文件內容
|
管道
,也就是將上面的內容作為下面命令的輸入
egrep
使用擴展正則表達式的grep
'(^\s*$|^.{1}$)`
是個正則表達式
表示匹配只有空格/TAB的空行或只有頭上一個任意字符的行,具體的
^表示匹配行首,\s表示包括空格、制表符、換頁符等空白字符的其中任意一個
*表示任意個,$表示行尾,而|表示或
^同樣的行首,.表示任意字符
{1}表示有且僅的一個,$同樣行尾
|
又是管道
wc
-l
計行數
整個命令的作用是查看inittab中的空白行及只有頭上一個字符的行數
直接使用通配符。
ls la*。
這是一種方法,*表示匹配任何長度的任意字符,通過這樣的方式就可以查找到所有以ls開頭的文件,如果我們想查找文件名中含有la的文件,只需輸入“ls *la*”即可。
擴展資料:
ls 指令是Linux下最常用的指令之一。
ls 命令將每個由 Directory 參數指定的目錄或者每個由 File 參數指定的名稱寫到標準輸出,以及您所要求的和標志一起的其它信息。
運用舉例:
1、列出具體文件 #ls -al //這個最常用,可是往往又不徹底符合要求,
2、列出一切子目錄的文件:#ls -R //上個指令僅僅列出了本目錄下的一切目錄和文件,可是目錄下的文件不會循環的列出。
腳本我懶得寫。 一分都沒有。
我給你個提示就行了。 你自己寫。
編寫一個腳本, 內容如下:
#!/bin/bash
if 當前時間 11:00 -a 當前時間 =6:00 ; then
wall EOF
上午好
EOF
elif 當前時間 =11:00 -a 當前時間 13:00 ; then
wall EOF
中午好
EOF
elif 當前時間 =13:00 -a 當前時間 18:00 ; then
wall EOF
下午好
EOF
fi
------------------------分割線-------------------------
然后用 crontab 定時 執行上面的腳本文件。