2013年4月11日 星期四

Argument list too long

今天有位同學(國中同學,大學走電子系)問我,在 Linux 下,要砍掉很多檔案要怎麼辦?
用 rm -f *.* 嗎? 

我建議他用 rm -f * 會比較好,Linux 裡常有些檔是沒有副檔名的。 

結果他告訴我,系統回他 /bin/rm: Argument list too long 


其實我自己也沒遇過這個問題,上網一查,發現還蠻容易查到答案的。
Argument list too long問題的解決方法 
bash: /bin/rm: Argument list too long – How to fix it

原來除了 rm 之外, cp,mv 在一次處理的檔案過多(但我不知道怎樣叫過多?)也會出現同樣的訊息。

這時候就要用一些小技巧:


  • find . -name '*' | xargs rm -f
  • find . -type f -exec rm {} \;
  • ls | xargs rm -f
第二種方法,我自己是沒有用過,不太會用 -exec。

如果是 cp 或 mv 這種需要加目的地當作參數的應該就是:


  • find . -name '*' | xargs cp ${target_dir}
  • find . -type f -exec cp {} ${target_dir} \;
  • ls | xargs cp ${target_dir}

沒有留言:

張貼留言