第十六天

liu4356發表於2024-03-10

第十六天

  1. inode是什麼?

    inode是linux檔案系統中用於儲存檔案後設資料的資料結構,包括但不限於:檔案大小、所有者、使用者組、許可權模式、時間戳(如建立時間、修改時間和訪問時間)、連結數以及指向檔案實際資料塊的指標。每個檔案和目錄在檔案系統中都有一個唯一的inode號碼,儘管使用者通常透過檔名來引用檔案,但在作業系統內部,它使用inode來識別並跟蹤檔案
    
    
    
  2. 查詢 7天以前的檔案

find . -type f -mtime +7

3 .查詢出*.txt檔案,批次移動到/tmp目錄

find . -type f -name "*.txt" -exec mv {} /tmp/ \;
find ./ -type f -name "*.txt" | xargs mv -t  /tmp
  1. 將以oldboy開頭的行找出來?
grep -r '^oldboy' .
grep '^abc' *

5.將全部內容顯示,但不要顯示空行


grep -v '^$'  檔名



[root@master ~]# vi 2.log
[root@master ~]# grep -v '^$' 2.log
djfasdf
sdjkfkasb
sdjkfhukas
fjskhfkas
sjkfhbsdgfwe
ksfksb
ejhfkase
jkehfkae
jkfnsekh
ksebjfkaejsb
jkehiae 
jkehfkase
khfkasehke
ekjhfkseghf'
sejbfjesg
ehjfjgse'
ejkrhkaehf
nekhfkuse
sejnkfheih
bnerfjkheuk
aenjkfhekg
bjeghfuieb
jkfhseghfiwe
hjaeshieubwauiet
ekjieht
nfehie

  1. 利用linux什麼命令真正統計目錄的大小?

    du -sh 目錄名
    
    
    
    [root@master ~]# du -sh /etc/passwd
    8.0K	/etc/passwd
    
    

系統特殊符號分別說下什麼意思? 重點掌握 為寫指令碼鋪墊

!:條件語句中代表邏輯非
>:追加,覆蓋
>>:追加末尾 不覆蓋

<<:用於向命令提供多行輸入

&&:只有當前面的命令成功執行時,後面的命令才會被執行
||:只有當前面的命令執行失敗時,後面的命令才會被執行

^:用於去除特殊字元的特殊意義
$:變數引用

''建立字面字串,其中的內容會被原樣解釋,不進行任何變數展開、命令替換或其他特殊字元處理
"" 建立字串,但是允許對其中的變數和命令替換進行解析和擴充套件


小結

xargs

xargs 是一個 Unix 和類 Unix 作業系統中的實用工具,它的主要作用是將標準輸入(stdin)中的引數列表轉換成小塊分段,並傳遞給其他命令進行執行。這樣可以避免因為引數列表過長而導致的問題。

xargs 命令經常與其他命令(如 find、grep、ls 等)一起使用,用於處理大量的檔案或資料。它的主要優點在於可以靈活地處理輸入資料,特別是當資料中包含特殊字元(如空格、引號等)時,xargs 可以正確地進行處理。

xargs 命令的常用選項包括:

-n:指定每次執行命令時使用的最大引數數量。例如,xargs -n 1 command 將逐個執行 command 的一個引數。
-I:將命令中指定的佔位符字串替換為標準輸入中的引數。例如,xargs -I {} command {} 將使用標準輸入中的引數替換 {}。
-t:在執行命令之前,將要執行的命令列印到標準錯誤輸出。這有助於除錯和檢視將要執行的命令。
-p:在執行每個命令之前提示使用者確認。這可以確保在執行重要操作之前得到使用者的許可。
-0:當 stdin 含有特殊字元(如空格、引號等)時,將其還原為一般字元,以確保引數的正確傳遞。





find ./ -type f -name "*.txt" | xargs mv -t  /tmp
您提供的命令組合是正確的,用於在當前目錄(./)及其子目錄中查詢所有 .txt 結尾的檔案,並將它們移動到 /tmp 目錄中。這裡是命令的分解:

find ./ -type f -name "*.txt":這個命令會在當前目錄(./)及其子目錄中查詢所有型別為檔案(-type f)且檔名以 .txt 結尾(-name "*.txt")的檔案。

|:這是一個管道符號,用於將前一個命令的輸出作為下一個命令的輸入。

xargs mv -t /tmp:xargs 命令會將 find 命令的輸出(即檔名列表)作為引數傳遞給 mv 命令。mv 命令的 -t 選項允許您指定目標目錄,之後列出要移動的檔案。這樣,所有透過管道傳遞的檔名都會被移動到 /tmp 目錄中。

請注意,如果您使用的是 GNU 版本的 find 和 xargs(這在大多數 Linux 發行版中都是預設的),那麼您的命令應該能夠正常工作。然而,如果您的系統上 xargs 不支援 -t 選項(例如,在一些老版本的 Unix 或 BSD 系統中),您可能需要稍微修改命令。

在不支援 -t 選項的系統中,您可以使用如下命令:

bash
find ./ -type f -name "*.txt" | xargs -I {} mv {} /tmp/
這裡,-I {} 選項告訴 xargs 使用 {} 作為替換字串,mv {} /tmp/ 則將每個找到的檔案移動到 /tmp 目錄中。

在執行此類命令之前,請確保 /tmp 目錄存在且您有足夠的許可權來移動檔案到該目錄。此外,如果 /tmp 目錄中已存在與要移動的檔案同名的檔案,它們將被覆蓋。如果您不想覆蓋檔案,您可能需要新增一些邏輯來檢查並處理這種情況。




find ./ -type f -name "*.txt" | xargs cp -t  /tmp
您的命令組合是正確的,用於在當前目錄(./)及其子目錄中查詢所有 .txt 結尾的檔案,並將它們複製到 /tmp 目錄中。這裡是命令的分解:

find ./ -type f -name "*.txt":這個命令會在當前目錄(./)及其子目錄中查詢所有型別為檔案(-type f)且檔名以 .txt 結尾(-name "*.txt")的檔案。

|:這是一個管道符號,用於將前一個命令的輸出作為下一個命令的輸入。

xargs cp -t /tmp:xargs 命令會將 find 命令的輸出(即檔名列表)作為引數傳遞給 cp 命令。cp 命令的 -t 選項允許您先指定目標目錄,然後列出要複製的檔案。這樣,所有透過管道傳遞的檔名都會被複制到 /tmp 目錄中。

請確保 /tmp 目錄存在且您有足夠的許可權來複制檔案到該目錄。如果 /tmp 目錄中已存在與要複製的檔案同名的檔案,並且您使用的是 GNU coreutils 版本的 cp,那麼預設情況下,cp 命令會詢問您是否要覆蓋這些檔案。如果您不希望被提示,您可以使用 -f 選項來強制覆蓋:

bash
find ./ -type f -name "*.txt" | xargs cp -t /tmp -f
此外,如果您的 xargs 或 cp 命令版本不支援 -t 選項,您可以使用以下替代方法:

bash
find ./ -type f -name "*.txt" | xargs -I {} cp {} /tmp/
這裡,-I {} 選項告訴 xargs 使用 {} 作為替換字串,cp {} /tmp/ 則將每個找到的檔案複製到 /tmp 目錄中。

在執行此類命令之前,請確保您瞭解它的行為,並準備好處理任何可能的檔案覆蓋或許可權問題。




.. 返回上一級
. 當前目錄

~ 返回家目錄

- 2個目錄快速切換




相關文章