新聞中心
在Linux系統(tǒng)中,xargs是一個非常實用的命令工具,可以將標準輸入數(shù)據(jù)轉換成命令行參數(shù)。

一、xargs基本用法
xargs命令的基本用法非常簡單,只需要將命令的輸出作為xargs的輸入,就可以實現(xiàn)將輸出轉換為命令行參數(shù)的功能。
例如,將列表中的所有文件復制到新目錄中:
“`
$ ls | xargs -I {} cp {} new_directory
“`
其中,-I {}選項指定xargs要替換的占位符,{}表示要替換的內容。cp命令會將列表中的每個文件復制到new_directory目錄中。
另外一個常見的用法是刪除所有匹配特定模式的文件。例如,刪除所有的log文件:
“`
$ ls | grep ‘.log’ | xargs rm
“`
在上面的命令中,xargs將所有以.log結尾的文件名作為rm命令的參數(shù),刪除所有匹配的文件。
二、xargs高級用法
除了基本用法之外,xargs還具有許多高級用法,可以更快捷、方便地處理各種情況。
1.控制參數(shù)格式
xargs命令將輸入視為行而不是空格分隔的值。在某些情況下,可以使用-d選項指定分隔符,以分隔不同的參數(shù)。
例如,在目錄中查找所有的文件并打印它們的文件名:
“`
$ find . -name ‘*.js’ | xargs -d ‘\n’ -I {} sh -c ‘echo {}’
“`
在上面的命令中,-d選項用于指定換行符為參數(shù)分隔符。-I {}仍然用于定義替換占位符,sh -c ‘echo {}’則是要運行的命令。
2.并行執(zhí)行任務
xargs命令還支持使用-n和-P選項來控制任務的并發(fā)執(zhí)行數(shù)量。
例如,使用curl命令并行下載列表中的圖片:
“`
$ cat file-list.txt | xargs -n 1 -P 4 curl -O
“`
在上面的命令中,-n 1選項指定每次傳遞給curl命令的參數(shù)數(shù)量為1,-P 4選項指定并行執(zhí)行的進程數(shù)為4,使得curl命令可以同時下載多個文件,提高了下載效率。
3.使用find命令
在處理大量文件時,我們經常需要使用find命令來篩選要處理的文件。xargs命令可以與find結合使用。
例如,將目錄中符合條件的文件名列表傳遞給xargs命令:
“`
$ find /var/log -name ‘*.log’ -type f -print0 | xargs -0 rm
“`
在上面的命令中,-print0選項告訴find命令用null字符分隔文件列表,-0選項用于xargs命令來處理null分隔的文件列表。
4.使用命令替換
xargs命令還支持使用命令替換。這使得可以動態(tài)生成參數(shù)列表。
例如,查找所有以.h文件結尾并將其編譯為.o文件的C語言源代碼文件:
“`
$ find . -name ‘*.c’ | xargs -I {} sh -c ‘gcc -c $(basename {} .c).c -o $(basename {} .c).o’
“`
在上面的命令中,$(basename {} .c)用于從源代碼文件名中提取出基礎名稱,然后使用gcc命令將其編譯為.o文件。
在Linux系統(tǒng)中,xargs命令是一種非常實用的工具,可以將標準輸入數(shù)據(jù)轉換為命令參數(shù)。通過使用xargs,可以更快捷、方便地處理各種情況。此外,xargs還支持高級用法,如控制參數(shù)格式、并行執(zhí)行任務、使用find命令和命令替換等。只要掌握了xargs命令的這些用法,就可以更加靈活地處理各種命令行任務。
相關問題拓展閱讀:
- Linux下查找大文件
- linux下備份一個目錄下所有文件及目錄,應該用什么命令?
Linux下查找大文件
Linux上查找更大文件的3種方法
之一種:ls
最簡單的方法就是借助 ls 命令,因為 ls 命令本身輸出是帶文件大小信息的。
比如,我要列出 /data/log/ 目錄中的20個更大文件,可以:
ls -lSh /data/log/ | head -20
第二種:find
find 本身就是查找命令,可以遞歸查找一個目錄的子目錄,所以用它是自然的。
比如,查找/etc目錄下更大的5個文件:
find /etc -type f -printf “%s\t%p\n” | sort -n | tail -5 | xargs ls -Slh
查找當前用戶名下更大的10個文件
find $HOME -type f -printf “%s\t%p\n” | sort -nr | head -10 | xargs ls -Slh
查詢大于200M的文件
find / -type f -size +200M | xargs ls -Slh
查詢100M和200M之間的文件
find / -type f -size +100M -size +200M | xargs ls -Slh
查詢root目錄下更大的5個文件
find /root -type f -exec ls -s {} ; | sort -n | tail -n5 | xargs ls -Slh
查詢/目錄下10天以前最桐早大的5個文件
find / -type f -mtime +10 -printf “%s\t%p\n” | sort -n | tail -5 | xargs ls -Slh
第三種:du
du 命令可以查看磁盤空間的使用情況,自然也可以用來查看磁盤上占用空間較多的文件和文件夾。
查找/root下5個更大的文件
du -ah /root | sort -nr | head -n5
查找當前目錄下更大的5個目錄
du -ah | sort -nr | head -n5
查找
根目錄
下更大目錄/文件(包括子文件夾)
du -Sh / | sort -rh | head -n10
只看大小在 GB 范圍內的所有文件
du -ah / | grep “G\b”
涉及到的命令參數(shù):
find:
-exec:假設find指令的回傳值為True,就執(zhí)行該指令;
-mtime n 查找系統(tǒng)中最后n天被改變文件數(shù)據(jù)的文件 +大于 -小于
-type 查找某一類型的文件
b -塊設備文件;
c -字符設備文件;
d -目錄;
p -管道文件;
f -普通文件;
l -符號鏈接文件;
s -socket文件;
-printf:假設find指令的回傳值為Ture,就將文件或目錄名稱列出到標準輸出。格式可以自行指定;襲輪卜
sort:
-n 依照數(shù)值的大小排序;
-r 以相反的順序來排序;
xargs:傳遞參數(shù)
ls -Slh
-Sl 從大到小顯示詳情
-Slr 從小到大顯示詳情
-h humans 以人類易讀的方式顯示(正常情況下顯示為bit,加上-h后 顯示的為KB MB GB TB等)
du:
-a 顯示所有目錄拍穗或文件的大小
-h 以K,M,G為單位,提高信息可讀性
linux下備份一個目錄下所有文件及目錄,應該用什么命令?
這里教大家如何用find、xargs和tar命令完成上面的功能。
建立一個測試環(huán)境,新建幾個文件
# cd /tmp
# mkdir test
# cd test
# touch a.php b.js c.css 1.png
# ls
1.png a.php b.js c.css
接下來,通過find命令找出指定后綴的文件,為了支持多個后綴文件,find命令用到了正則匹配
# find . -type f -regex “.*\.\(php\|js\|css\)”
./b.js
./a.php
./c.css
-regex后面的參數(shù)看起孫謹來很復雜,其實很簡單,我來做個解釋,雙引號就不需要解釋了吧
.*\.\(php\|js\|css\) 簡化一下就是.*.(php|js|css),其實就是對.()|做皮轎了下轉義而已,開頭的.*匹配除換行符外的任意字符(這個懂正則表達式的應該都明白)
找出文件后,就是如何備份這些文件了,tar需要指定源文件,怎么獲取find出來的這些文件,并傳給tar呢,xargs的作用就來了??吹较旅鎥args輸出的是什么了吧,這個正是tar需要的。
# find . -type f -regex “.*\.\(php\|js\|css\)” | xargs
./b.js ./a.php ./c.css
# find . -type f -regex “.*\.\(php\|js\|css\)” | xargs tar czvf test.tar.gz
./b.js
./a.php
./c.css
下面看看文件是否備份成功了
# tar tzvf test.tar.gz
-rw-r–r– root/root:38 ./b.js
-rw-r–r– root/root 則握基:37 ./a.php
-rw-r–r– root/root:38 ./c.css
應該用cp
-rf
源目錄鬧察
備份目錄
cp是復制命令
-r
遞歸處理,指定目錄下的文件和子目錄一并處理
-f
強行復制,無論目標是否存在
知道指定后綴名的文件總個數(shù)命令:
find
.
-name
*.cpp
|
wc
-l
知道一個目錄下代碼總行數(shù)以及單個文件行數(shù):
find
.
-name
*.h
|
xargs
wc
-l
linux統(tǒng)計文件夾中文件數(shù)目。
之一種方法:
ls
-l|grep
“^-”|wc
-l
ls
-l
長列表輸出該目錄下文件信息(注意這里的文件,不同于一般的文件,可能是目錄、鏈接、設備文件等)。如果ls
-lR|grep
“^-”|wc-l則可以連子目錄下的文件一起統(tǒng)計。
grep
^-
這里梁歷將長列表輸出信息過濾一部分,只保留一般文件,如果只保留目錄就是
^d
wc
-l
統(tǒng)計輸出信息的行數(shù),因為已經過濾得只剩一般文件了,所以統(tǒng)計結果就是一般文件信息的行數(shù),又由于一行信息對應一個文件,所以也就是文件的個數(shù)。
第二種方法:
find
./
-type
f|wc
-l
由于默認find會去子目錄查找,如果只想橡彎搜查找當前目錄的文件用
需要說明的是第二種方法會比之一種方法快很多,尤其是也統(tǒng)計子目錄時。
擴展資料
linux
Linux是一套免費使用和自由傳播的類Unix操作系統(tǒng),是一個基于POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統(tǒng)。它能運行主要的UNIX工具軟件、應用程序和網絡協(xié)議。它支持32位和64位硬件。Linux繼承了Unix以網絡為核心的設計思想,是一個性能穩(wěn)定的多用戶網絡操作系統(tǒng)。
Linux操作系統(tǒng)誕生于1991
年10
月5
日(這是之一次正式向外公布時間)。Linux存在著許多不同的Linux版本,但它們都使用了Linux內核。Linux可安裝在各種計算機硬件設備中,比如手機、平板電腦、路由器、視頻游戲控制臺、臺式計算機、大型機和超級計算機。
嚴格來講,Linux這個詞本身只表示Linux內核,但實際上人們已經習慣了用Linux來形容整個基于Linux內核,并且使用GNU工程各種工具和數(shù)據(jù)庫的操作系統(tǒng)。
參考資料來源:百度百科:linux
1、cp -rf 源目錄 備份目錄
2、cp是復制命令
3、-r 遞歸處理,指定目錄下的文件和子目錄一并處理
4、-f 強行復制,無論目標是否存在
一、使用tar命令進行備份
tar命令本來的作用是能夠把很多文件放到一個小文件中進行歸檔,但是同時又能夠對文件進行壓縮。所以,一般情況下我們都采用亂乎tar進行文
件整理和壓縮。
/* 把/root整個目錄進行壓縮備份 */
# tar cvzf /tmp/root_backup_1215.tar.gz /root
那么我們就能嘩核悉夠把 /tmp/root_backup_1215.tar.gz進行存儲,比如保存到磁帶機上等。
說明: 壓縮的tar檔案通常的擴展名是 tar.gz、tgz、或者tar.bz2。前兩個擴展名一般是使用gzip命令進行壓縮的tar檔案,后一個擴展名是
基于bzip2的壓縮,因為壓縮算法的原因,后一個壓縮更強。
同時,我們也很容易把已經打包壓縮的文件進行恢復:
/* 從備份文件中進行還原 */
# tar tkvzf root_backup_1215.tar.gz
說明: tar命令是路經相關的。如果將文件用絕對路經保存到一個目錄中(即開頭為斜桿,如/home/mj),則可以從計算機上的任何位置將文
件恢復到這個目錄。如果使用相對路經(沒有開頭的斜桿,如/home/mj),則文件不一定恢復到原址,而是取決于當前工作目錄。
/* 把備份文件釋放出來 */
# tar zxvf root_backup_1215.tar.gz
/* 把/root目錄備份并且壓縮 */
# tar czvf root_backup_1215.tar.gz /root
二、使用cpio備份存檔
cpio (copy in/out) 命令可以建立存檔,跟tar不同之處在于,它能夠處理標準的輸入輸出。顧名思義,就是復制,輸入,輸出的意思。
如果要備份root的文件,使用下列命令:
# find /root | cpio -o > /tmp/root_backup_1215.cpio
cpio能夠使用通配符將一組文件設置成標準輸入。比如,下面見所有的.tif文件建立檔案:
# find *.tif | cpio -o > /tmp/back.cpio
記住,find命令很靈活,下列命令把系統(tǒng)中所有的.tif文件進行歸檔:
# find / -name ‘*.tif’ | cpio -o > /tmp/back_tif.cpio
同時,也很容易從cpio檔案中恢復文件。下列命令恢復back_tif.cpio中的文件:
# cpio -i /dev/st0
# cpio -i
三、磁帶轉存和恢復
dump與restore命令使遞增備份與差異備份很容易實現(xiàn)。dump可以取得目錄內容,restore可以交互式將備份文件返回原址。
盡管這些命令最常用于磁帶機,但是也同樣適合其他介質,比如可以備份到軟盤。
1、用dump存檔
dump有三個基本選項,可以設置一系列命令,從主目錄備份,差異備份。例如,我們要把/home/mao目錄備份到/devnst0磁帶機上:
# dump 0f /dev/nst0 /home/mao
# dump 1f /dev/nst0 /home/mao
# dump 2f /dev/nst0 /home/mao
# dump 3f /dev/nst0 /home/mao
# dump 4f /dev/nst0 /home/mao
# dump 5f /dev/nst0 /home/mao
之一個命令 # dump 0f /dev/nst0 /home/mao 是建立/home/mao目錄的完全備份,后面的命令一次運行,只對商議次備份之后改變的文件建立
差異備份。氏鏈
提示: 為了加速備份,可以使用磁帶機允許的更大塊長。例如,命令# dump 0f /dev/nst0 /home/mao -b 2023使用的塊長為2023字節(jié)。可以
使用更大的塊長來減少備份時間,但是也要在restore命令的時候使用想適應的塊來還原。
如果想要備份整個系統(tǒng),可以使用u選項,例如:
# dump 0uf /dev/nst0 /
2、用restore進行還原
可以使用restore命令瀏覽dump命令備份的文件清單。例如:
# restore -tf /dev/fd0
也可以用恢復搜索的方式搜索當前備份。
linux xargs的介紹就聊到這里吧,感謝你花時間閱讀本站內容,更多關于linux xargs,Linux命令xargs使用簡介,Linux下查找大文件,linux下備份一個目錄下所有文件及目錄,應該用什么命令?的信息別忘了在本站進行查找喔。
香港服務器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網服務提供商,擁有超過10年的服務器租用、服務器托管、云服務器、虛擬主機、網站系統(tǒng)開發(fā)經驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務器、香港云服務器、免備案服務器等。
文章標題:Linux命令xargs使用簡介(linuxxargs)
路徑分享:http://fisionsoft.com.cn/article/cohcscj.html


咨詢
建站咨詢
