1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
      linux批量操作時(shí)提示Argumentlisttoolong怎么辦

      這篇文章主要介紹linux批量操作時(shí)提示Argument list too long怎么辦,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

      創(chuàng)新互聯(lián)建站客戶idc服務(wù)中心,提供四川主機(jī)托管、成都服務(wù)器、成都主機(jī)托管、成都雙線服務(wù)器等業(yè)務(wù)的一站式服務(wù)。通過各地的服務(wù)中心,我們向成都用戶提供優(yōu)質(zhì)廉價(jià)的產(chǎn)品以及開放、透明、穩(wěn)定、高性價(jià)比的服務(wù),資深網(wǎng)絡(luò)工程師在機(jī)房提供7*24小時(shí)標(biāo)準(zhǔn)級(jí)技術(shù)保障。

      第一種情況:

      在實(shí)際使用過程中,若一個(gè)目錄下文件或文件夾太多,在執(zhí)行“*” 命令時(shí) 會(huì)提示Argument list too long,如rm -rf /tmp/*命令下。
      解決方案:

      ls | xargs ­n 10 rm ­rf ls

      SSH執(zhí)行以上命令,輸出所有的文件名(用空格分割) xargs就是將ls的輸出,每10個(gè)為一組(以空格為分隔符),作為rm ­rf的參數(shù) 也就是說將所有文件名10個(gè)為一組,由rm ­rf刪除。

      第二種情況:

      rm、cp、mv是unix下面常用到的檔案處理指令,當(dāng)我們需要?jiǎng)h除大量的log檔案,如果檔案數(shù)太多就會(huì)出現(xiàn)此訊息【/bin/rm: Argument list too long】

      解決方式如下:
      例如要?jiǎng)h除 /tmp/*.log
      則執(zhí)行【ls /tmp/*.log | xargs rm -f】這樣就可以蘿^__^,其他cp,mv同理!

      第三種情況:

      今日需要?jiǎng)h除/tmp目錄下的所有文件,文件數(shù)量比較多。

      ls -lt /tmp | wc -l  
      385412

      使用 rm * 后,系統(tǒng)提示錯(cuò)誤 Argument list too long
      原因是在linux下,試圖傳太多參數(shù)給一個(gè)系統(tǒng)命令(ls *; cp *; rm *; cat *; etc..)時(shí),就會(huì)出現(xiàn) Argument list too long錯(cuò)誤。

      解決方法如下:
      使用find -exec 遍歷,然后執(zhí)行刪除便可。

      sudo find /tmp -type f -exec rm {} \;

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

      這時(shí)可以用find命令來結(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ù)列表過長(zhǎng),
      for i in *.m;do mv $i ${i%.m};done
      于是求助于google,探索過程就省略了,直接說解決方法吧:
      ls dir1 | xargs -t -I {} mv {} dir2/{}
      這里的一對(duì)大括號(hào)是原文給的例子里用的,后來看了參數(shù)的用法,其實(shí)那對(duì)大括號(hào)是可以用任意字符串替換的,比如:
      ls dir1 | xargs -t -I asdf mv asdf dir2/asdf
      效果和大括號(hào)那一版是完全一樣的,就是看起來有點(diǎn)兒不嚴(yán)肅。
      需要說明的是,上面xargs的第二個(gè)參數(shù),是大寫的i,讀作”愛“的那個(gè)字母,不是小寫的L。至于參數(shù)的含義嘛,我忘了。
       

      Linux下 報(bào)錯(cuò)“命令參數(shù)列表過長(zhǎng)”,在用mv命令一次移動(dòng)3萬多個(gè)文件時(shí)失敗了,原始命令類似這樣:”mv $(ls dir1) dir2“。錯(cuò)誤提示的中心思想是:”你這參數(shù)也太TM多了吧“。
      按照LZ想法大概可以這么做:find /dir1/ -maxdepth 1 | xargs -i mv {} /dir2/
      如果參數(shù)過長(zhǎng),使用tar比較簡(jiǎn)單
      tar -C /dir1/ -cf - . | tar -xf - -C /dir2/

      于是求助于google,探索過程就省略了,直接說解決方法吧:
      ls dir1 | xargs -t -I {} mv {} dir2/{}
      這里的一對(duì)大括號(hào)是原文給的例子里用的,后來看了參數(shù)的用法,其實(shí)那對(duì)大括號(hào)是可以用任意字符串替換的,比如:
      ls dir1 | xargs -t -I asdf mv asdf dir2/asdf
      效果和大括號(hào)那一版是完全一樣的,就是看起來有點(diǎn)兒不嚴(yán)肅。
      需要說明的是,上面xargs的第二個(gè)參數(shù),是大寫的i,讀作”愛“的那個(gè)字母,不是小寫的L。至于參數(shù)的含義嘛,我忘了。


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

      [user@localhost foo]$ mv * ../foo2
      bash: /bin/mv: Argument list too long

      “Argument list too long”參數(shù)列表過長(zhǎng)錯(cuò)誤經(jīng)常發(fā)生在用戶在一行簡(jiǎn)單命令中提供了過多的參數(shù)而導(dǎo)致,經(jīng)常在ls *, cp *, rm * 等中出現(xiàn)。
      根據(jù)問題的原因以下提供了四種方法,可以根據(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í)用戶可以考慮的解決方案,不過需要很多重復(fù)命令和對(duì)文件名分布的觀察與猜測(cè)。

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

      [user@localhost foo]$ find $foo -type f -name '*' -exec mv {}$foo2/. \;
      方法2通過find命令,將文件清單輸出到mv命令,使其一次處理一個(gè),這樣就完全避免了過量參數(shù)的存在,另外通過不同的參數(shù),可以指定除了名稱以外的時(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
      寫一個(gè)shell函數(shù)并不涉及到某種程度的復(fù)雜性, 這種方法比方法1和方法2相比更加靈活。

      下面我們來擴(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ù)自己的需要無限制的擴(kuò)展功能。

      方法4 : 終極解決方案,重新編譯內(nèi)核
      首先使用這個(gè)方案之前要謹(jǐn)慎,因?yàn)樯婕暗叫薷膬?nèi)核源代碼,在生產(chǎn)環(huán)境中還是要斟酌一下并做好測(cè)試。
      另外,這個(gè)方法是從根本上解決的,一勞永逸的
      這也是開放源碼的好處之一
      首先在內(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ù)受限問題。
      然后 重新編譯并啟用新內(nèi)核即可。

      以上是“l(fā)inux批量操作時(shí)提示Argument list too long怎么辦”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


      本文題目:linux批量操作時(shí)提示Argumentlisttoolong怎么辦
      路徑分享:http://www.ef60e0e.cn/article/jhisic.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        滨州市| 长葛市| 静宁县| 高阳县| 普格县| 嘉兴市| 尚义县| 厦门市| 勃利县| 渝北区| 岳池县| 永寿县| 贵南县| 兴义市| 东兴市| 株洲县| 兴国县| 新晃| 罗山县| 滕州市| 探索| 海林市| 郎溪县| 伊宁县| 志丹县| 兴和县| 台南市| 玉树县| 喜德县| 温宿县| 清徐县| 友谊县| 炉霍县| 白银市| 碌曲县| 望都县| 嵩明县| 土默特右旗| 万全县| 南康市| 漳平市|