Linux FAQ : ls , cp , rm Argument list too long

在使用 Linux  

如大量檔案

ls 查看

cp 複製

rm 清理

----------------------------------------------------------------------------------------------

可能會遇到了 Argument list too long

大約 10 萬筆以上檔案 就可能會看到此訊息

主要可能是 指令搭配特殊字元 * 

* 在 Linux 可說是全部都找

不過此符號有其存取上限 , 超過了就會讓 指令 出現 error

----------------------------------------------------------------------------------------------

1. ls 可以嘗試看不帶入 *

2. cp 可參考

指令 : 

for i in `ls` ; do cp $i $i.01 ; done

介紹 : 透過 for 迴圈 來一筆一筆檢查

3. rm 可參考

指令 : 

du -a --time --time-style='+%s' `find ./* 2>/dev/null | xargs -i ls {} ` | 
awk -v MAX=$date_time '{sec=(MAX-$2); print $3 " " sec}' | 
awk -v MAX=$lim '{if(MAX<$2) {print $1}}' | xargs rm -rf

介紹 : 用 du 和 xargs 來拆分 , du 傳給 find 輔助找出檔案 ( 隱藏檔 ... 等 )
            awk 是檢查看時間超過設定值就顯示 ( 要設定變數 $lim )

範例 : 找出時間大於 10 sec 檔案與目錄

#!/bin/ksh

lim=10

du -a --time --time-style='+%s' `find ./* 2>/dev/null | xargs -i ls {} ` | 
awk -v MAX=$date_time '{sec=(MAX-$2); print $3 " " sec}' | 
awk -v MAX=$lim '{if(MAX<$2) {print $1}}' | xargs rm -rf


留言

這個網誌中的熱門文章

冒險者 1-4 part 2

部落衝突

Fantech EG1 立體聲入耳式電競耳機 開箱文 2018/07