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

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


咨詢
建站咨詢
