iT邦幫忙

0

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 可以嘗試看不帶入 *

  1. cp 可參考

指令 :

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

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


  1. 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

rm 更快 方案 find 參數 delete

find . -mtime +0 -delete

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言