2022-05-24|閱讀時間 ‧ 約 3 分鐘

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

    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
    備註 : 也可以 find -d 功能來清理檔案
    find . -mtime +0 -delete
    分享至
    成為作者繼續創作的動力吧!
    © 2024 vocus All rights reserved.