0

我有一个这样的早晨,没有任何计划。我需要一次将文件按 1,000 个块移动到目标目录

我想像这样遍历我的文件

for i in `find . -name '*XML'`
   for((b=0; b<1000; b++))
   do
   mv $i targetdirect/
   done
done

但是我得到一个“-bash:语法错误,靠近意外的标记‘完成:”错误。

我错过了什么?

4

2 回答 2

3

第二个for循环是语法错误。你也应该双引号"$i"

一次移动 1000 个文件是什么意思?大概是这样的?

find . -name '*.XML' -print0 | xargs -r0 -n 1000 mv -t targetdirect

-print0和对应的xargs -0是处理任意文件名的 GNU 扩展。这是有效的,因为空字符是 Unix 上文件名中的无效字符;因此,可以安全地用作文件名之间的分隔符。对于常规命名的文件(文件名中没有引号,没有换行符等),这可能看起来很偏执,但这是有据可查的做法和常见问题解答

于 2012-10-01T17:09:19.540 回答
0

你的第一个for循环没有对应的do (你有两个done,但只有一个do。)

于 2012-10-01T17:09:06.767 回答