我有一个这样的早晨,没有任何计划。我需要一次将文件按 1,000 个块移动到目标目录
我想像这样遍历我的文件
for i in `find . -name '*XML'`
for((b=0; b<1000; b++))
do
mv $i targetdirect/
done
done
但是我得到一个“-bash:语法错误,靠近意外的标记‘完成:”错误。
我错过了什么?
我有一个这样的早晨,没有任何计划。我需要一次将文件按 1,000 个块移动到目标目录
我想像这样遍历我的文件
for i in `find . -name '*XML'`
for((b=0; b<1000; b++))
do
mv $i targetdirect/
done
done
但是我得到一个“-bash:语法错误,靠近意外的标记‘完成:”错误。
我错过了什么?
第二个for
循环是语法错误。你也应该双引号"$i"
。
一次移动 1000 个文件是什么意思?大概是这样的?
find . -name '*.XML' -print0 | xargs -r0 -n 1000 mv -t targetdirect
-print0
和对应的xargs -0
是处理任意文件名的 GNU 扩展。这是有效的,因为空字符是 Unix 上文件名中的无效字符;因此,可以安全地用作文件名之间的分隔符。对于常规命名的文件(文件名中没有引号,没有换行符等),这可能看起来很偏执,但这是有据可查的做法和常见问题解答。
你的第一个for
循环没有对应的do
(你有两个done
,但只有一个do
。)