欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于"Argument?list?too?long”參數(shù)列表過(guò)長(zhǎng)的四種解決方法

 更新時(shí)間:2023年02月20日 10:37:55   作者:DemonHunter211  
Linux下報(bào)錯(cuò)“命令參數(shù)列表過(guò)長(zhǎng)”,在用mv命令一次移動(dòng)3萬(wàn)多個(gè)文件時(shí)失敗了,原始命令類(lèi)似這樣:”mv?$(ls?dir1)?dir2“,錯(cuò)誤提示的中心思想是:”你這參數(shù)也太TM多了吧“,本文給大家分享四種解決”Argument?list?too?long”參數(shù)列表過(guò)長(zhǎng),感興趣的朋友一起看看吧

四種解決”Argument list too long”參數(shù)列表過(guò)長(zhǎng)的辦法

在linux中刪除大量文件時(shí),直接用rm會(huì)出現(xiàn):-bash: /bin/rm: 參數(shù)列表過(guò)長(zhǎng)的錯(cuò)誤。

這時(shí)可以用find命令來(lái)結(jié)合使用。

例:
1、rm * -rf 改為:

find . -name "*" | xargs rm -rf '*' 就行了

2、rm test* -rf 改為:

find . -name "test*" | xargs rm -rf "test*"

mv時(shí)報(bào)參數(shù)列表過(guò)長(zhǎng),

for i in *.m;do mv $i ${i%.m};done

于是求助于google,探索過(guò)程就省略了,直接說(shuō)解決方法吧:

ls dir1 | xargs -t -I {} mv {} dir2/{}

這里的一對(duì)大括號(hào)是原文給的例子里用的,后來(lái)看了參數(shù)的用法,其實(shí)那對(duì)大括號(hào)是可以用任意字符串替換的,比如:

ls dir1 | xargs -t -I asdf mv asdf dir2/asdf

效果和大括號(hào)那一版是完全一樣的,就是看起來(lái)有點(diǎn)兒不嚴(yán)肅。

需要說(shuō)明的是,上面xargs的第二個(gè)參數(shù),是大寫(xiě)的i,讀作”愛(ài)“的那個(gè)字母,不是小寫(xiě)的L。至于參數(shù)的含義嘛,我忘了。

 Linux下 報(bào)錯(cuò)“命令參數(shù)列表過(guò)長(zhǎng)”,在用mv命令一次移動(dòng)3萬(wàn)多個(gè)文件時(shí)失敗了,原始命令類(lèi)似這樣:”mv $(ls dir1) dir2“。錯(cuò)誤提示的中心思想是:”你這參數(shù)也太TM多了吧“。

按照LZ想法大概可以這么做:find /dir1/ -maxdepth 1 | xargs -i mv {} /dir2/
如果參數(shù)過(guò)長(zhǎng),使用tar比較簡(jiǎn)單

tar -C /dir1/ -cf - . | tar -xf - -C /dir2/

  于是求助于google,探索過(guò)程就省略了,直接說(shuō)解決方法吧:

ls dir1 | xargs -t -I {} mv {} dir2/{}

  這里的一對(duì)大括號(hào)是原文給的例子里用的,后來(lái)看了參數(shù)的用法,其實(shí)那對(duì)大括號(hào)是可以用任意字符串替換的,比如:

ls dir1 | xargs -t -I asdf mv asdf dir2/asdf

  效果和大括號(hào)那一版是完全一樣的,就是看起來(lái)有點(diǎn)兒不嚴(yán)肅。

  需要說(shuō)明的是,上面xargs的第二個(gè)參數(shù),是大寫(xiě)的i,讀作”愛(ài)“的那個(gè)字母,不是小寫(xiě)的L。至于參數(shù)的含義嘛,我忘了。

另外4種方法

作為一個(gè)linux用戶(hù)/系統(tǒng)管理員, 有些時(shí)候你會(huì)遇到以下錯(cuò)誤提示:

[user@localhost foo]$ mv * ../foo2

bash: /bin/mv: Argument list too long

“Argument list too long”參數(shù)列表過(guò)長(zhǎng)錯(cuò)誤經(jīng)常發(fā)生在用戶(hù)在一行簡(jiǎn)單命令中提供了過(guò)多的參數(shù)而導(dǎo)致,經(jīng)常在ls *, cp *, rm * 等中出現(xiàn)。
根據(jù)問(wèn)題的原因以下提供了四種方法,可以根據(jù)自己的情況酌情選用

方法1 : 將文件群手動(dòng)劃分為比較小的組合
e.g 1:

[user@localhost foo]$ mv [a-l]* ../foo2

[user@localhost foo]$ mv [m-z]* ../foo2

這是最基本的方法,只是簡(jiǎn)單的使參數(shù)數(shù)量符合要求,這種方法應(yīng)用范圍有限,只適用于文件列表中的名字分布比較均勻,另外這也是個(gè)初級(jí)用戶(hù)可以考慮的解決方案,不過(guò)需要很多重復(fù)命令和對(duì)文件名分布的觀(guān)察與猜測(cè)。

方法2 : 使用find命令
e.g 2:

[user@localhost foo]$ find $foo -type f -name '*' -exec mv {}$foo2/. \;

方法2通過(guò)find命令,將文件清單輸出到mv命令,使其一次處理一個(gè),這樣就完全避免了過(guò)量參數(shù)的存在,另外通過(guò)不同的參數(shù),可以指定除了名稱(chēng)以外的時(shí)間戳,權(quán)限,以及inode等匹配模式。
方法2的缺點(diǎn)在于比較耗費(fèi)時(shí)間。

方法3 : 創(chuàng)建shell函數(shù)
e.g 3.1:

function huge_mv ()
{whileread line1; do
mv foo/$line1 ../foo2
done
}
ls -1 foo/ | huge_mv

寫(xiě)一個(gè)shell函數(shù)并不涉及到某種程度的復(fù)雜性, 這種方法比方法1和方法2相比更加靈活。
下面我們來(lái)擴(kuò)展一下例3.1 :
e.g 3.2:

function huge_mv ()
{whileread line1; do
md5sum foo/$line1 >> ~/md5sums
ls -l foo/$line1 >> ~/backup_list
mv foo/$line1 ../foo2
done
}
ls -1 foo/ | huge_mv

相比例3.1,例3.2生成了文件的md校驗(yàn)散列文件和名字備份,符合給自己留條后路的哲學(xué)。
另外可以根據(jù)自己的需要無(wú)限制的擴(kuò)展功能。

方法4 : 終極解決方案,重新編譯內(nèi)核

首先使用這個(gè)方案之前要謹(jǐn)慎,因?yàn)樯婕暗叫薷膬?nèi)核源代碼,在生產(chǎn)環(huán)境中還是要斟酌一下并做好測(cè)試。
另外,這個(gè)方法是從根本上解決的,一勞永逸的 
這也是開(kāi)放源碼的好處之一 
首先在內(nèi)核源碼中找到 include/linux/binfmts.h文件 ,搜索到以下字段:

/*
* MAX_ARG_PAGES defines the number of pages allocated for arguments
* and envelope for the new program. 32 should suffice, this gives
* a maximum env+arg of 128kB w/4KB pages!
*/
#define MAX_ARG_PAGES 32

修改 MAX_ARG_PAGES數(shù)值為 64 或者更高即可完善的解決參數(shù)受限問(wèn)題。
然后 重新編譯并啟用新內(nèi)核即可。

轉(zhuǎn)自

http://hi.baidu.com/cpuramdisk/item/5aa49ce00c0757aecf2d4f24

補(bǔ)充:Linux中“Argument list too long”解決方法

當(dāng)我想執(zhí)行以下命令時(shí),報(bào)錯(cuò):

mv train2014/* coco_train2014/
-bash: /bin/mv: Argument list too long

這是因?yàn)檫@些命令的參數(shù)太長(zhǎng),即文件個(gè)數(shù)過(guò)多。其中 train2014 文件夾的內(nèi)容全是 .jpg 格式的圖片文件 解決的方法如下:

find train2014/ -name "*.jpg" | xargs -i mv {} coco_train2014/

同理使用 cp, ls 等命令也可以以同樣的方式執(zhí)行:

拷貝:

find train2014/ -name "*.jpg" | xargs -i cp {} coco_train2014/

刪除:

find train2014/ -name "*.jpg" | xargs -i rm {}?

參考:

http://noahsnail.com/2017/11/23/2017-11-23-Linux%E4%B8%AD%E2%80%9CArgument%20list%20too%20long%E2%80%9D%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95/

到此這篇關(guān)于關(guān)于"Argument list too long”參數(shù)列表過(guò)長(zhǎng)的四種解決方法的文章就介紹到這了,更多相關(guān)Argument list too long內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Linux 中的 Openssl命令及實(shí)例代碼

    Linux 中的 Openssl命令及實(shí)例代碼

    OpenSSL是一個(gè)強(qiáng)大的安全套接字層密碼庫(kù),囊括主要的密碼算法、常用的密鑰和證書(shū)封裝管理功能及SSL協(xié)議,并提供豐富的應(yīng)用程序供測(cè)試或其它目的使用
    2017-09-09
  • Linux啟動(dòng)過(guò)程詳細(xì)介紹

    Linux啟動(dòng)過(guò)程詳細(xì)介紹

    這篇文章主要介紹了Linux啟動(dòng)過(guò)程詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Linux?signal()函數(shù)的使用學(xué)習(xí)

    Linux?signal()函數(shù)的使用學(xué)習(xí)

    這篇文章主要為大家介紹了Linux?signal()函數(shù)的使用學(xué)習(xí)及示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 一個(gè)Shell小腳本精準(zhǔn)統(tǒng)計(jì)Mysql每張表的行數(shù)實(shí)現(xiàn)

    一個(gè)Shell小腳本精準(zhǔn)統(tǒng)計(jì)Mysql每張表的行數(shù)實(shí)現(xiàn)

    這篇文章主要介紹了一個(gè)Shell小腳本精準(zhǔn)統(tǒng)計(jì)Mysql每張表的行數(shù)實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Shell腳本計(jì)算字符串長(zhǎng)度和判斷字符串為空小技巧

    Shell腳本計(jì)算字符串長(zhǎng)度和判斷字符串為空小技巧

    這篇文章主要介紹了Shell腳本計(jì)算字符串長(zhǎng)度和判斷字符串為空小技巧,本文分別給出計(jì)算字符串長(zhǎng)度和判斷字符串為空各3種實(shí)現(xiàn)方法,需要的朋友可以參考下
    2015-04-04
  • Shell判斷字符串變量是否為空的方法實(shí)現(xiàn)

    Shell判斷字符串變量是否為空的方法實(shí)現(xiàn)

    本文主要介紹了Shell判斷字符串變量是否為空的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Linux Shell腳本查看NUMA信息

    Linux Shell腳本查看NUMA信息

    這篇文章主要介紹了Linux Shell腳本查看NUMA信息,本文直接給出腳本實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-06-06
  • Shell中的循環(huán)語(yǔ)句for、while、until實(shí)例講解

    Shell中的循環(huán)語(yǔ)句for、while、until實(shí)例講解

    這篇文章主要介紹了Shell中的循環(huán)語(yǔ)句for、while、until實(shí)例講解,簡(jiǎn)單清晰明了,非常不錯(cuò)的教程,需要的朋友可以參考下
    2014-06-06
  • linux刪除無(wú)效鏈接文件腳本分享

    linux刪除無(wú)效鏈接文件腳本分享

    一個(gè) shell 腳本文件,用于刪除指定目錄下無(wú)效鏈接文件,可利用標(biāo)準(zhǔn)輸入指派多個(gè)處理目標(biāo)
    2014-03-03
  • Linux shell腳本的建立與執(zhí)行

    Linux shell腳本的建立與執(zhí)行

    今天小編就為大家分享一篇關(guān)于Linux shell腳本的建立與執(zhí)行,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02

最新評(píng)論