實戰一
要求:將某資料夾及其子檔案中所有 readme.txt 的檔案找出來,統計檔案中包括name,age,base address等字段資訊。(因為存在重名衝突,因此需要在抓取的過程中編號來修改其名稱)
指令碼實現:
#!bin/bash
count=1
for line in $( find -name readme.txt )
do
echo "find $"
name0=$(printf "%05d" $count)
name=$
echo $name
cp $ "readme"$name".txtnew"
(( count=count+1))
echo $count "rename ok"
done
指令碼釋義:
第一句表示由bin路徑下的bash直譯器來解釋該指令碼,第二句定義count變數,第三句for迴圈,括號內是查詢搜尋語句,$()表示執行括號內的語句,並把返回值儲存,以供查詢。第三四do,第五句列印line的值,第六句 %05d 表示至少輸出5位數字,取count的值賦給name0,第七句name=$,將name0從左到右的0~5位資料賦值給name(列如name0資料為123456,那麼name被賦值為12345,沒有6),第八句列印name;第九句重新命名;第十句自增,等同於count=$(( count+1)) 或者 let count++(count和++之間不能有空格);第十一句列印;十二句結束。
注意:語法結構:for ,do ,done;類似的還有while ,do ,done。
linux中` `、$、$( ) 、$ 有什麼區別
shell 按規則批量重新命名檔案
語句實現:find -name *.txtnew -exec grep -e name -e age -e "base address" {} >ok.txt \;
實戰二
要求:不小心將壓縮包解壓在當前資料夾,導致目錄很亂,需要刪除解壓出來的檔案。
指令碼實現:
mkdir tmp
tar xvf *.tar -c tmp
rm -rf $(ls tmp) (加上-r-f可以不用每次詢問)
指令碼釋義:第一句建立資料夾;第二句將tar包壓縮到指定目錄tmp;第三句刪除tmp中ls列出來的所有檔案。
實戰三
要求:檢視檔案大小
語句實現:du -h --max-depth=4 檔名/
語句釋義:展示最大深度為4的檔案及大小,--max-depth=4最大深度為4。
實戰四
要求:將目標資料夾的windows檔案全部轉換為unix系統的檔案。
語句實現:find -iname "*" -exec dos2unix {} \;
vim指令,linux指令
在normal模式 也就是按了esc 下 u 撤銷上一次操作 0 到本行的開頭 到本行第乙個字元的開頭 到本行的結尾 w 到下乙個單詞的開頭 e 到下乙個單詞的結尾 zz wq 儲存並退出 gg 到文章的開頭 3g 到文章的第三行 g 到文章的結尾 abc 在游標以後的位置找到abc這個字元。此時按...
Linux面試指令 cp指令
cp 命令用來複製檔案或者目錄,是 linux 系統中最常用的命令之一。一般情況下,shell 會設定乙個別名,在命令列下複製檔案時,如果目標檔案已經存在,就會詢問是否覆蓋,不管你是否使用 i 引數。但是如果是在 shell 指令碼中執行 cp 時,沒有 i 引數時不會詢問是否覆蓋。這說明命令列和 ...
Linux面試指令 nl指令
nl 命令在 linux 系統中用來計算檔案中行號。nl 可以將輸出的檔案內容自動的加上行號。其預設的結果與 cat n 有點不太一樣,nl 可以將行號做比較多的顯示設計,包括位數與是否自動補齊 0 等等的功能。nl 命令是 number of lines 的縮寫。1 命令格式 nl 選項 檔案 2...