如何将一个文件夹下的10万个txt文件 分成每500个txt一个文件夹的形式?

2012-07-08 17:06:37 +08:00
 google456
如何将一个文件夹BBB下的10万个txt文件 分成每500个txt一个文件夹(AAA*)的形式?

最终BBB文件夹下只含有AAA1 AAA2 AAA3... 文件夹,而AAA*内包含500TXT文件。

求推荐一个软件或者脚本 多谢。
4075 次点击
所在节点    问与答
19 条回复
cloudzhou
2012-07-08 17:43:50 +08:00
#!/bin/bash
index=0
while true
do
let index=$index+1
files=`find *.txt -type f |head -n 500|perl -pe 's/\n/ /'`
if [ "$files" == "" ]; then
break;
fi
if [ ! -e "AAA$index" ]; then
mkdir "AAA$index"
fi
mv $files "AAA$index"
done
013231
2012-07-08 17:48:19 +08:00
cloudzhou
2012-07-08 17:48:32 +08:00
格式有点问题,请看这里
> curl http://www.gitshell.com/t.sh
kojp
2012-07-08 17:48:46 +08:00
@cloudzhou 出手好快....
cloudzhou
2012-07-08 17:51:05 +08:00
@013231 `ls *.txt` 的方式很可能超过个数的(10万!),或者需要xargs一下,并且是一个个文件的move,不能一次mv多个文件
013231
2012-07-08 18:03:15 +08:00
@cloudzhou 謝謝, 以前不知道ls可能會有文件數量限制. 我改成find了.
google456
2012-07-08 19:53:27 +08:00
@cloudzhou 有window能用的吗?
google456
2012-07-08 19:53:54 +08:00
@013231 有window能用的吗?
cloudzhou
2012-07-08 20:05:39 +08:00
@google456 支持什么脚本语言,python or perl
013231
2012-07-08 20:34:30 +08:00
google456
2012-07-08 21:12:26 +08:00
@cloudzhou 用cygwin运行了 sh ./t.sh 出现如下错误

Administrator@MS /cygdrive/c/1
$ sh ./t.sh
./t.sh: line 6: perl: command not found
head: 写入错误: Broken pipe
google456
2012-07-08 21:13:53 +08:00
@013231 把你代码保存为qqq.sh 用cygwin运行了 sh ./qqq.sh 出现如下错误

Administrator@MS /cygdrive/c/1
$ sh ./qqq.sh
./qqq.sh: line 4: syntax error near unexpected token `$'do\r''
'/qqq.sh: line 4: `do
cloudzhou
2012-07-08 21:27:50 +08:00
@google456 bash ./t.sh
cloudzhou
2012-07-08 21:28:55 +08:00
此外你很可能没有perl环境,把 |perl -pe 's/\n/ /' 这句话去掉看看
013231
2012-07-08 21:29:14 +08:00
@google456 如果運行cloudzhou的腳本需要安裝perl.
如果運行我的腳本, 請直接把'view row'鏈接(在代碼框右下角)保存下來運行, 我懷疑你複製粘貼時改變了某些字符.
再給你一個Python的版本(需要安裝Python):
http://gist.github.com/3070895
同樣請保存原始文件.
google456
2012-07-08 21:45:59 +08:00
@013231 感谢 你的第一个脚本 运行成功了。

但是貌似对于 文件名含有空格的 文件不行。 文件名会被拆分, 有什么办法么?
013231
2012-07-08 22:03:57 +08:00
@google456 我修改了那個腳本(加了一句"IFS='\n'"), 你再試試.
joeyker
2012-07-08 22:37:51 +08:00
歪个楼。
想起消极姐的一个段子:老板找我谈话说:以后 dev 再问「你有没有想过你这个系统如果有十万张图怎么 办?」你不要回答「哪个二逼要一屏看十万张图」,他想听的其实是「你认为什 么样的架构可以处理?」以及「你好厉害哦!」
google456
2012-07-09 10:33:21 +08:00
@013231 完全解决 真不知道如何感谢, 帅呆了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/41789

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX