Linux基礎命令之文件和目錄操作(二)

来源:https://www.cnblogs.com/flashfish/archive/2019/04/16/10716681.html
-Advertisement-
Play Games

. find 用於查找目錄下的文件,也可以調用其他命令使用 find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression] find 【選項】 【路徑】【操作語句】 options: -depth # 在指定目錄下最深層的子目錄 ...


. find

  用於查找目錄下的文件,也可以調用其他命令使用

  find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

  find  【選項】            【路徑】【操作語句】

 

  

  options:

    -depth        # 在指定目錄下最深層的子目錄開始查找

    -maxdept levels    # 查找最大目錄級數,levels為自然數

    -regextype type    # 正則表達式類型,預設是emacs,

 

  tests:

    -mtime [-n|n|+n]        # 按文件的修改時間查找文件 ,單位是“天”

    -atime [-n|n|+n]         # 按文件的訪問時間查找文件

    -ctime [-n|n|+n]         # 按文件的狀態改變時間查找文件

    -mmin             # 按文件的修改時間查找文件,單位是“分鐘”

    -amin              # 按文件的訪問時間查找文件

    -cmin              # 按文件的狀態改變時間查找文件

    -group            # 按文件所屬的組來查找文件

    -name            # 按文件名查找文件,支持通配符號

    -newer              # 查找更改時間比指定文件新的文件

    -nogroup             # 查找的文件所屬的組在/etc/groups中不存在  

    -nouser            # 查找文件的數組在/etc/passwd中不存在

    -path pattern         # 指定路徑樣式,配合-prune排除指定目錄

    -perm            # 按文件許可權來查找文件

    -size n[cwbkMG]        # 按照文件大小為n來查找,後面接計量單位

    -user             # 按文件屬主來查找文件

    -type             # 按文件類型查找文件  b,c,d,p,l,f,s,D

    

  actions:

    -delete            # 將找出的文件刪除

    -exec             # 將查找出的文件交給改參數後面的shell命令運行

    -ok              # 與-exec用法相同,但是會進行提示

    -prune             # 不在當前指定的目錄進行查找

    -print               # 預設功能可以省略,將匹配文件輸出到標準輸出

    !                # 取反

    -a              # 取交集,and

    -o               # 取並集,or

     

find . -atime -2
find /data/ -mtime -5
find /var/log/ -mtime  +5 -name '*.log' 
find . ! -type d
find /data/ -perm 755
find . -size +1000c
find /data -path "/data/dir3" -prune -o -print   # -a和-o類似“&&”和“||”,為真時,執行-prune;為假時,執行-print
find /data \(-path /data/dir2 -o -path /data/dir3\) -prune -o -print
find . -nouser
find . -group nobody
find . -newer file1.txt     # 查找比file1更新的文件
find . -maxdepth 1 -type d
find . -maxdepth 1 -type d ! -name "."
find . -maxdepth 1 -type d ! -name "." -o -name "xiaolizi"
find . -maxdepth 1 -type d ! -name "." -a -name "xiaolizi"
find . -type f -exec ls -l {} \;
find . -type f -mtime +14 -exec rm {} \;
find . -type f -mtime +14 -ok rm {} \;
find . -type f -mtime +14 |xargs ls -l
find . -name "*.txt" |xargs  -i mv {} dir2/
find . -name "*.txt" |xargs  -i mv -t dir2/
find . -type -f -name "test.txt"|xargs tar zcf xiaolizi.tar.gz # 不能使用-exec

. rename

  通過字元串替換的方式批量修改文件名

  rename from to file...

  

  from: 需要替換或者需要處理的字元(文件名或者擴展名)

  to:  把from代表的內容替換為to代表的內容

  file:  待處理的文件,可以用“*”通配所有文件

rename "_finished"   ""   *          #  將所有文件的_finished替換為空
rename .jpg   .xiaolizi   *.jpg      #   將所有文件的.jpg替換為.xiaolizi

. basename

  只顯示去除絕對路徑後的文件名

. dirname

  只顯示文件的目錄名

. chattr

  改變文件擴展屬性

  a  # 只能向文件中添加數據,而不能刪除,多用於伺服器日誌安全

  i   # 設定文件不能被刪除,改名,寫入或者新增內容, 給文件加鎖+i 解鎖-i

. lsattr

  查看文件擴展屬性

  

. file

  顯示文件類型

  file + filename

. md5sum 

  用於計算和校驗文件的MD5值,是一種不可逆的加密演算法

  -b     # 二進位模式讀取文件

  -c     # 從指定文件中讀取md5校驗值,併進行校驗

  -t      # 文本模式讀取文件,預設模式

  --quiet   # 校驗文件使用的參數,驗證通過不輸出OK

  --status  # 校驗文件使用參數,不輸出任何信息,可以通過命令的返回值來判斷

md5sum xiaolizi.txt       # 加密文件
md5sum xiaolizi.txt>md5.log  # 生成校驗文件
md5sum -c md5.log         # 檢查文件完整性
md5sum --status -c md5.log  # 使用"echo $?",來判斷是否執行成功

# 伺服器備份腳本,使用md5校驗數據完整性
  

#!/bin/bash
# Source function library
./etc/init.d/functions

# Defined variables
IP=$(ifconfig eth1|awk -F '[ :]+' 'NR==2{print $4}')
Path="/data/backup/$IP"
TIME=`/bin/date +%F`
BackupFile=/server/scripts/backuplist

# Judged the exostence of variables
[ ! -d $Path ] && mkdir -p $Path
[ ! -f $BackupFile ] && {
echo "Please give me $BackupFile"
exit 1
}

# Defined result function
function Msg(){
if [ $? -eq 0 ];then
action "$*" /bin/true
else
action "$*" /bin/false
fi
}

# Backuo config files
tar zcfh $Path/conf_${TIME}.tar.gz `cat $BackupFile` &>/dev/null
Msg 'Backup config files'

# Make a flag for backup
find $Path -type f -name "*${TIME}.tar.gz"|xargs md5sum >$Path/flag_${TIME} 2>/dev/null

# 備份成功建立md5sum文件指紋庫
Msg 'Make a flag for backup'

# Send backup to backupsever
rsync -az $Path rsync_backup@rsync::backup --password-file=/etc/rsync.password &>/dev/null
Msg 'Send backup to backup server'

 

# 檢查伺服器備份情況,郵件通知管理員

#!/bin/bash
DIR=/data/backup
TIME=`/bin/date + %F`
log=/tmp/$TIME-check.log

[ -d $DIR ] && {
find $DIR -type f -name "flag_$TIME"|xargs md5sum -c >$log 2>/dev/null
mail -s "$(date +%F_%T)backup check result" [email protected] <$log
}

# Delete backup a week ago
find $Path -type f -name "*.tar.gz" -mtime +7|xargs rm -f &>/dev/null
Msg 'Delete backup a week ago'

. chown

  改變文件或目錄的用戶和用戶組

       chown [OPTION]... [OWNER][:[GROUP]] FILE...

  被授權的用戶,在操作系統中需要先存在

chown oldboy file.txt # 屬主會變化
chown .odboy file.txt  # 屬組會變化
chown root:root file.txt # 同時更改文件所屬用戶和組屬性
或者
chown root.root file.txt
chown -R xiaolizi.xiaolizi file.txt # 遞歸授權

 

. chmod

  改變文件或者目錄許可權,但是一般只有root用戶或者文件的屬組才可以使用

  chmod [OPTION]... MODE[,MODE]... FILE...

  許可權位:

    r:讀4  w:寫2  x:執行1  -:無許可權

  特殊許可權位:

    t,T,s,S,X,x

  

  用戶類型:

    所屬用戶:u  所屬組用戶:g  其他用戶:o

 

  操作字元:

    +加入  -減去  =設置

chmod a= file.txt # 所有許可權為空
chmod u+x file.txt
chmod g+w file.txt
chmod o+r file.txt
chmod uf+r,o-r file.txt
chmod u=rwx,g=rx,o=x file.txt
chmod -R 644 /dir/  遞歸設置文件許可權

 

. umask

  用來定義用戶創建文件或目錄的預設許可權

   1.創建文件最大許可權為666,但是設置的umask碼為022,所以文件許可權變為644

    但是當文件許可權值,減去,umask值,若是期中有數字是奇數,那這個奇數需要+1變成偶數

    

    2.創建目錄預設最大許可權是777,777-022=755,所以預設創建目錄許可權是755

    3.umask值是由/etc/profile文件中決定的61,69行,具體可以查看代碼

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • HtmlAgilityPack官網:https://html-agility-pack.net/?z=codeplex .net中使用HtmlAgilityPack做爬蟲步驟: 1、在nuget中安裝HtmlAgilityPack 安裝好之後我們就可以開始我們的爬蟲之旅了 2、抓取網頁源代碼 1 v ...
  • vi是Linux命令行界面下的文字編輯器,vim是vi的增強版(Vi IMproved),完全相容 可以理解成普通的txt文本與word文檔之間的差距。 註:還有一款全屏編輯器是nano,可以瞭解下 【vim的三種模式】 普通模式,編輯模式,命令模式 1.普通模式 使用vim命令打開文件,只能使用上 ...
  • 每個學員機上有三台預先配置好的虛擬機server —— 作為練慣用伺服器desktop —— 作為練慣用客戶機classroom —— 提供網關/DNS/軟體素材等資源 通過真機上“虛擬系統管理器”訪問在列表中找到classroom、server、desktop按順序打開並運行、操作 首先保證cla ...
  • . wc 用於統計文件的行數,單詞,或位元組數 -l # 統計行數 -L # 列印最長行的長度,一般腳本中判斷字元長度 -c # 統計位元組數 -w # 統計單詞數 -m 統計字元數 . iconv 轉換文件的編碼格式 iconv [options] [-f from-encoding] [-t to- ...
  • 一、概述 mfd是Multifunction device的簡稱,即多功能設備,是許多有共性的設備的集合,mfd由核心層(core)以及其下的“子設備”組成。從下文將會看到,mfd只是將設備註冊到platform匯流排——因此,其子設備屬於platform設備。它並沒有對涉及到的設備或驅動做實質性改變 ...
  • . cat 功能是連接多個文件並且列印到屏幕輸出,或重定向到指定的文件 五大功能: 1.查看文件內容 cat file.txt 2.合併文件內容 cat file1 file2>newfile3 3.創建便捷新文件 cat >file 輸入完成之後,使用ctrl+c結束即可 4.清空文件內容 cat ...
  • 一、安裝node.js a)、不確定自己時候安裝了node.js可以在控制台當中輸入node -v來查看當前是否已經存在 如果看到輸出了版本信息,那麼證明已經有了node.js b)、如果看到node不是內部命令,那麼還沒有安裝node,node下載網址:http://nodejs.cn/downl ...
  • 對於是使用windows操作系統的小伙伴來說(mac用戶忽略),要學習一些技術可能需要使用Linux系統,自然就需要使用虛擬機安裝Linux,當然現在很多主流的學習網站上的教程都會提供老師配置好的虛擬機環境鏡像。但是還會有很多同學在使用的時候按照教程的配置卻依舊出現虛擬機的網路問題。 【親測解決】 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...