亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標(biāo)題:
如何高效地將大量小文件平均分到各個(gè)文件夾中?
[打印本頁]
作者:
iocg
時(shí)間:
2014-09-22 08:17
標(biāo)題:
如何高效地將大量小文件平均分到各個(gè)文件夾中?
本帖最后由 iocg 于 2014-09-22 09:01 編輯
現(xiàn)某文件夾A下有100w個(gè)小文件(.txt),大小10K左右。
假設(shè)文件數(shù)量的閾值設(shè)為20W。
將在A文件夾自動生成5個(gè)文件夾(命名:1~5),將100W個(gè)文件每20W個(gè)移動至5個(gè)文件夾中(不用按順序)。
1.png
(25.66 KB, 下載次數(shù): 113)
下載附件
A1-5
2014-09-22 08:17 上傳
如何實(shí)現(xiàn),怎樣才能保證高效?
作者:
bulletmarquis
時(shí)間:
2014-09-22 09:02
本帖最后由 bulletmarquis 于 2014-09-22 09:31 編輯
我的習(xí)慣
ll|grep ^-|awk '{_cmd_="cp -f "$NF" "NR%5+1"/";_cmd_|getline;close(_cmd_)}'
復(fù)制代碼
不過文件多的話,逐個(gè)cp或者mv效率不高,可以改成先把文件名寫到數(shù)組里,等攢到一定數(shù)量,再拼裝cp語句
作者:
iocg
時(shí)間:
2014-09-22 09:22
回復(fù)
2#
bulletmarquis
拼裝cp語句?求大神解釋。。
作者:
bulletmarquis
時(shí)間:
2014-09-22 09:35
本帖最后由 bulletmarquis 于 2014-09-22 10:02 編輯
回復(fù)
3#
iocg
拿26*5個(gè)文件做測試,先創(chuàng)建文件和目錄
touch {a..z}{1..5}
mkdir 1 2 3 4 5
復(fù)制代碼
下面處理時(shí),每20個(gè)文件操作一次,測試效果(當(dāng)然LZ文件很多,20個(gè)太小了,可以將NR%20==0改成合適的值)
ll|grep ^-|awk '{a[NR%5+1]=a[NR%5+1]" "$NF}NR%20==0{for (i in a){_cmd_="cp -f "a[i]" "i"/";print _cmd_}delete a;print ""}'
cp -f a3 b3 c3 d3 4/
cp -f a4 b4 c4 d4 5/
cp -f a5 b5 c5 d5 1/
cp -f a1 b1 c1 d1 2/
cp -f a2 b2 c2 d2 3/
cp -f e3 f3 g3 h3 4/
cp -f e4 f4 g4 h4 5/
cp -f e5 f5 g5 h5 1/
cp -f e1 f1 g1 h1 2/
cp -f e2 f2 g2 h2 3/
cp -f i3 j3 k3 l3 4/
cp -f i4 j4 k4 l4 5/
cp -f i5 j5 k5 l5 1/
cp -f i1 j1 k1 l1 2/
cp -f i2 j2 k2 l2 3/
cp -f m3 n3 o3 p3 4/
cp -f m4 n4 o4 p4 5/
cp -f m5 n5 o5 p5 1/
cp -f m1 n1 o1 p1 2/
cp -f m2 n2 o2 p2 3/
cp -f q3 r3 s3 t3 4/
cp -f q4 r4 s4 t4 5/
cp -f q5 r5 s5 t5 1/
cp -f q1 r1 s1 t1 2/
cp -f q2 r2 s2 t2 3/
cp -f u3 v3 w3 x3 4/
cp -f u4 v4 w4 x4 5/
cp -f u5 v5 w5 x5 1/
cp -f u1 v1 w1 x1 2/
cp -f u2 v2 w2 x2 3/
復(fù)制代碼
實(shí)際執(zhí)行
ll|grep ^-|awk '{a[NR%5+1]=a[NR%5+1]" "$NF}NR%20==0{for (i in a){_cmd_="cp -f "a[i]" "i"/";_cmd_|getline;close(_cmd_)}delete a}'
復(fù)制代碼
作者:
Herowinter
時(shí)間:
2014-09-22 10:07
本帖最后由 Herowinter 于 2014-09-22 11:05 編輯
回復(fù)
1#
iocg
感覺可以這樣,無法測試,請謹(jǐn)慎使用.
for((i=1;i<=5;i++));do for((j=1;j<=1000;j++))do ls *.txt|head -200|xargs -i mv "{}" $i;done done
復(fù)制代碼
作者:
Shell_HAT
時(shí)間:
2014-09-22 10:48
回復(fù)
2#
bulletmarquis
無法處理文件名包含空格的情況吧
作者:
bulletmarquis
時(shí)間:
2014-09-22 11:03
本帖最后由 bulletmarquis 于 2014-09-22 11:04 編輯
回復(fù)
6#
Shell_HAT
確實(shí)考慮不周,修改了一下
構(gòu)造數(shù)據(jù)
echo {a..z}{1..5}|awk -vRS=" " '{print "" > $0" "$0}'
mkdir 1 2 3 4 5
復(fù)制代碼
測試效果
ls -F1|grep -v /$|awk '{a[NR%5+1]=a[NR%5+1]" \""$0"\""}NR%20==0{for (i in a){_cmd_="cp -f "a[i]" "i"/";print _cmd_}delete a;print ""}'
復(fù)制代碼
實(shí)際執(zhí)行
ls -F1|grep -v /$|awk '{a[NR%5+1]=a[NR%5+1]" \""$0"\""}NR%20==0{for (i in a){_cmd_="cp -f "a[i]" "i"/";_cmd_|getline;close(_cmd_)}delete a;print ""}'
復(fù)制代碼
作者:
bulletmarquis
時(shí)間:
2014-09-22 11:08
回復(fù)
6#
Shell_HAT
搭車請教一下,如果文件名中會有空格的話,有沒有好辦法只取出文件名來且逐行展示文件名?
看了半天ls --help,只有
ls -F1|grep -v /$
能行,但是如果目錄下還有鏈接啥的,就很麻煩
有沒有其他好辦法?
作者:
blackold
時(shí)間:
2014-09-22 11:49
回復(fù)
1#
iocg
先把文件列表分割到5份(split),即5個(gè)文件, 再用這5個(gè)文件為輸入,xargs mv 文件到相應(yīng)的文件夾。
作者:
yestreenstars
時(shí)間:
2014-09-22 11:55
回復(fù)
9#
blackold
這樣效率應(yīng)該比用for循環(huán)高
作者:
Herowinter
時(shí)間:
2014-09-22 12:06
回復(fù)
9#
blackold
黑哥的算法學(xué)得真好,分治法分分鐘搞定,不得不服.
作者:
reyleon
時(shí)間:
2014-09-22 13:35
來個(gè)偽多進(jìn)程并發(fā) mv
作者:
iocg
時(shí)間:
2014-09-22 14:03
回復(fù)
9#
blackold
能不能給個(gè)代碼參考下呢?
作者:
yestreenstars
時(shí)間:
2014-09-22 14:24
回復(fù)
13#
iocg
大概是這樣:
ls | split -l 200000
mkdir {0..4}
awk '{cmd="mv "$0" "int(NR/200000);system(cmd);close(cmd)}' x*
復(fù)制代碼
作者:
blackold
時(shí)間:
2014-09-22 17:43
本帖最后由 blackold 于 2014-09-23 13:29 編輯
回復(fù)
13#
iocg
mkdir {1..5}
prefix=prefix$$
find -maxdepth 1 -type f -name '*.txt' | split -l 200000 -d -a1 - $prefix
for i in {1..5};do xargs -a $prefix$i -d '\n' mv -i -t $i;done
rm $prefix[0-9]
復(fù)制代碼
原來不是我的錯(cuò), 是論壇的錯(cuò)。
@Shell_HAT
作者:
bulletmarquis
時(shí)間:
2014-09-22 18:42
回復(fù)
15#
blackold
黑哥這句 prefix=prefix$ 是啥意思。
作者:
blackold
時(shí)間:
2014-09-22 18:47
回復(fù)
16#
bulletmarquis
漏了,是$$
作者:
Shell_HAT
時(shí)間:
2014-09-23 12:56
回復(fù)
17#
blackold
#1個(gè)$的實(shí)際效果:
$
#2個(gè)$的實(shí)際效果:
$
#3個(gè)$的實(shí)際效果:
$$
#4個(gè)$的實(shí)際效果:
$$
復(fù)制代碼
作者:
blackold
時(shí)間:
2014-09-23 13:21
本帖最后由 blackold 于 2014-09-23 13:21 編輯
回復(fù)
18#
Shell_HAT
Shell_HAT 什么意思? 看不懂。
作者:
Shell_HAT
時(shí)間:
2014-09-23 13:24
回復(fù)
19#
blackold
Discuz論壇的兩個(gè)JS腳本有bug,兩個(gè)$符號放在code標(biāo)簽里面會丟掉一個(gè)。
作者:
blackold
時(shí)間:
2014-09-23 13:26
回復(fù)
20#
Shell_HAT
是這樣啊,以前真沒注意。
歡迎光臨 Chinaunix (http://www.72891.cn/)
Powered by Discuz! X3.2